`

javaEmail邮件发送多人 附件

阅读更多
工具类
MessageTools.java

 
package com.cm.util;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.AuthenticationFailedException;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

import com.cm.dto.EmailDto;


public class MessageTools
{
	// 邮件服务器及登录用户、密码,发送邮箱

	private static String userName;// 用户名

	private static String passWord;// 密码
	private static String smtpServer;// 邮件服务器

	private static String from;// 发件人

	private static String mail_socksProxyHost;// 本地代理host
	
	private static String mail_socksProxyPort;// 本地代理prot
	
	private static String mail_socksProxyUser;// 本地代理用户
	
	private static String mail_socksProxyPassword;// 本地代理密码


	// 从配置文件中获取相应的账户信息

	static
	{
		try
		{
			Properties props = new Properties();
			props.load(MessageTools.class.getResourceAsStream("mail.property"));
			userName = props.getProperty("mail_username");// 设置发件人用户名
			passWord = props.getProperty("mail_password");// 设置发件人密码

			smtpServer = props.getProperty("mail.smtp.server");// 设置发件人邮件服务器
			from = props.getProperty("mail_from_addr");// 设置发件人邮箱

			mail_socksProxyHost = props.getProperty("mail_socksProxyHost");//代理地址
			mail_socksProxyPort = props.getProperty("mail_socksProxyPort");//代理端口号
			mail_socksProxyUser = props.getProperty("mail_socksProxyUser");//代理用户名
			mail_socksProxyPassword = props.getProperty("mail_socksProxyPassword");//代理密码

		} catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * @发送邮件

	 * @return 成功-true;失败-false
	 * @throws CBFException
	 */
	public static boolean send(List<String> tolist,List<String> cclist,EmailDto dto)
	{
		try
		{
			
			Properties props = System.getProperties();
			props.setProperty("proxySet", "true");
			
			if(mail_socksProxyHost!=null && !mail_socksProxyHost.equals(""))
			{
				props.setProperty("socksProxyHost", mail_socksProxyHost);//代理地址
			}
				
			if(mail_socksProxyPort!=null && !mail_socksProxyPort.equals(""))
			{
				props.setProperty("socksProxyPort", mail_socksProxyPort);//代理端口号

			}
			
			if(mail_socksProxyUser!=null && !mail_socksProxyUser.equals(""))
			{
				 props.setProperty("socksProxyUser",mail_socksProxyUser);   
			}
			if(mail_socksProxyPassword!=null && ! mail_socksProxyPassword.equals(""))
			{
				 props.setProperty("socksProxyPassword",mail_socksProxyPassword);
			}
			props.setProperty("mail.smtp.host", smtpServer);// 设置邮件发送服务器
			props.put("mail.smtp.auth", "true");
			props.put("mail.debug", "false");

			// 使用验证
			Session session = Session.getDefaultInstance(props,
					new Authenticator()
					{
						protected javax.mail.PasswordAuthentication getPasswordAuthentication()
						{
							return new javax.mail.PasswordAuthentication(
									from, passWord);
						}
					});

			MimeMessage message = new MimeMessage(session);
			
			
			if(tolist.size()>0){
				for (int i = 0; i < tolist.size(); i++) {
					
					to = tolist.get(i);
				}
			}
			
			message.setFrom(new InternetAddress(from));// 设置发件人信息
			
			//是否有收件人
			if(tolist.size()>0){
			
				Address[]  addressTO = new InternetAddress[tolist.size()]; //收件人
				
				for (int i = 0; i < tolist.size(); i++) {
					addressTO[i] = new InternetAddress(tolist.get(i));
				}
				
					message.setRecipients(Message.RecipientType.TO,addressTO);//设置收件人信息
				
				if(cclist.size()>0){
					Address[]  addressCC = new InternetAddress[cclist.size()];//抄送人
					
					for (int j = 0; j < cclist.size(); j++) {
						addressCC[j] = new  InternetAddress(cclist.get(j));
					}
					message.setRecipients(Message.RecipientType.CC, addressCC);
				}
					
					message.setSubject(dto.getSubject());//设置邮件主题
					Multipart mm = new MimeMultipart(); // 新建一个MimeMultipart对象用来存放多个BodyPart对象
					BodyPart mdp = new MimeBodyPart(); // 新建一个存放信件内容的BodyPart对象
					mdp.setContent(dto.getBody(), "text/html;charset=gb2312"); // 给BodyPart对象设置内容和格式/编码方式
					mm.addBodyPart(mdp); // 将含有信件内容的BodyPart加入到MimeMultipart对象中
		
					BodyPart mbpf = new MimeBodyPart();
		
				    FileDataSource fds = new FileDataSource(dto.getFilename());//附件
		
				    mbpf.setDataHandler(new DataHandler(fds));
		
				    mbpf.setFileName(MimeUtility.encodeWord(fds.getName(), "GB2312",null));
		
				    mm.addBodyPart(mbpf);
					
					message.setContent(mm); // 把mm作为消息对象的内容
		
					message.setSentDate(new Date());//设置发送时间
		
					message.saveChanges();
					Transport.send(message);//发送邮件操作
	
				return true;
			}
			
		} catch (AuthenticationFailedException afx)
		{
			afx.printStackTrace();
		} catch (Exception ex)
		{
			ex.printStackTrace();
		}
		return false;
	}
	
	
	public static void main(String[] args)
	{
           List<String> tolist = new ArrayList<String>(); // 发件人集合
		tolist.add("XXX@163.com");
		tolist.add("XXX@163.com");
		List<String> cclist = new ArrayList<String>();// 抄送人集合
		cclist.add("XXX@126.com");
		cclist.add("XXX@126.com");
		EmailDto dto = new EmailDto();
		dto.setSubject("这是测试邮件");// 设置邮件标题
		dto.setBody("<h1>" + "<font color='RED'>" + "邮件测试"
				+ ".</font></h1>");// 设置邮件的格式
		dto.setFilename("C:\\exp\\test.xls"); // 附件
		MessageTools tools = new MessageTools();
		tools.send(tolist, cclist, dto);
	}
}




EmailDto.java
package com.cm.dto;

import java.io.Serializable;

import com.cm.util.PageInfo;

public class EmailDto extends PageInfo implements Serializable
{
	private String id;
	private String title;	 //邮件标题
	private String emailAddr;//邮件地址
	private String content;	 //邮件内容
	private String type;	 //邮件类型
	private String crtTm;	 //创建时间
	private String remark;	 //说明
	private String stateChar;//状态

	private String sendNum;	 //发送次数

	private String updTm;    //发送时间

	private String crtCde;	 //发件人

	private String from;	 //发件人

	private String to;		 //收件人

	private String subject;  //设置邮件主题
	private String body;	 //设置邮件信息内容
	private String server;   //发送邮件服务器
	private String socksProxyHost;//设置代理服务器地址
	private String socksProxyPort;//设置代理服务器端口号
	private String socksProxyUser;//设置代理服务器用户

	private String socksProxyPassword;//设置代理服务器密码

	private String passWord;//发送者账户密码

	private String userName;//发送者账户名称
	
	private String filename;//附件

	
	public String getPassWord()
	{
		return passWord;
	}
	public void setPassWord(String passWord)
	{
		this.passWord = passWord;
	}
	public String getUserName()
	{
		return userName;
	}
	public void setUserName(String userName)
	{
		this.userName = userName;
	}
	public String getSocksProxyHost()
	{
		return socksProxyHost;
	}
	public void setSocksProxyHost(String socksProxyHost)
	{
		this.socksProxyHost = socksProxyHost;
	}
	public String getSocksProxyPort()
	{
		return socksProxyPort;
	}
	public void setSocksProxyPort(String socksProxyPort)
	{
		this.socksProxyPort = socksProxyPort;
	}
	public String getSocksProxyUser()
	{
		return socksProxyUser;
	}
	public void setSocksProxyUser(String socksProxyUser)
	{
		this.socksProxyUser = socksProxyUser;
	}
	public String getSocksProxyPassword()
	{
		return socksProxyPassword;
	}
	public void setSocksProxyPassword(String socksProxyPassword)
	{
		this.socksProxyPassword = socksProxyPassword;
	}
	public String getBody()
	{
		return body;
	}
	public void setBody(String body)
	{
		this.body = body;
	}
	public String getSubject()
	{
		return subject;
	}
	public void setSubject(String subject)
	{
		this.subject = subject;
	}
	public String getFrom()
	{
		return from;
	}
	public void setFrom(String from)
	{
		this.from = from;
	}
	public String getTo()
	{
		return to;
	}
	public void setTo(String to)
	{
		this.to = to;
	}
	public String getTitle()
	{
		return title;
	}
	public void setTitle(String title)
	{
		this.title = title;
	}
	public String getEmailAddr()
	{
		return emailAddr;
	}
	public void setEmailAddr(String emailAddr)
	{
		this.emailAddr = emailAddr;
	}
	public String getContent()
	{
		return content;
	}
	public void setContent(String content)
	{
		this.content = content;
	}
	public String getType()
	{
		return type;
	}
	public void setType(String type)
	{
		this.type = type;
	}
	public String getCrtTm()
	{
		return crtTm;
	}
	public void setCrtTm(String crtTm)
	{
		this.crtTm = crtTm;
	}
	public String getRemark()
	{
		return remark;
	}
	public void setRemark(String remark)
	{
		this.remark = remark;
	}
	public String getStateChar()
	{
		return stateChar;
	}
	public void setStateChar(String stateChar)
	{
		this.stateChar = stateChar;
	}
	public String getSendNum()
	{
		return sendNum;
	}
	public void setSendNum(String sendNum)
	{
		this.sendNum = sendNum;
	}
	public String getUpdTm()
	{
		return updTm;
	}
	public void setUpdTm(String updTm)
	{
		this.updTm = updTm;
	}
	public String getCrtCde()
	{
		return crtCde;
	}
	public void setCrtCde(String crtCde)
	{
		this.crtCde = crtCde;
	}
	public void setServer(String server)
	{
		this.server = server;
	}
	public String getServer()
	{
		return server;
	}
	public void setId(String id)
	{
		this.id = id;
	}
	public String getId()
	{
		return id;
	}
	public String getFilename() {
		return filename;
	}
	public void setFilename(String filename) {
		this.filename = filename;
	}
	
}



property文件中配置系统邮箱信息 和 代理信息
mail.property 

mail.smtp.server = smtp.163.com
mail_from_addr = XXX@163.com
mail_username = XXX
mail_password = XXX

mail_socksProxyHost =
mail_socksProxyPort =
mail_socksProxyUser =
mail_socksProxyPassword =
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics