JavaMail 发送邮件

//JavaMail 发送邮件

//工具类

import javax.activation.*;

import javax.mail.Header;

import javax.mail.Multipart;

import javax.mail.internet.*;

import java.io.File;

import java.io.IOException;

import java.util.*;

import org.apache.commons.lang.StringUtils;

import org.apache.log4j.Appender;

import org.apache.log4j.Logger;

import org.springframework.mail.javamail.JavaMailSenderImpl;

import org.springframework.mail.javamail.MimeMailMessage;

public class MailSender {

protected final Logger logger = Logger.getLogger(getClass());

//服务器地址

private String smtpServer;

//服务器用户名

private String smtpUser;

//登陆服务器密码

private String smtpPassword;

private Appender appender;

public void addAppender(Appender appender) {

this.appender = appender;

logger.addAppender(appender);

}

public void removeAppender() {

logger.removeAppender(this.appender);

}

public Appender getAppender() {

return appender;

}

/**

* send mail

*@param from 邮件显示地址

* @param to 邮件到发送地址(如果是有抄送,邮件以“,”隔开 。如:[email protected][email protected]

* @param subject 标题

* @param content 内容

* @param fileAttachments 附件sourceFileName

* @param sourceFileName 附件显示名称

* @throws Exception

*/

public void sendMail(String from, String to, String subject,

String content, List fileAttachments, List sourceFileName) throws Exception

{

JavaMailSenderImpl mailSender = new JavaMailSenderImpl();

if (!StringUtils.isEmpty(this.smtpUser) && !StringUtils.isEmpty(this.smtpPassword)) {

logger.info("Use Smtp Auth:" + this.smtpUser + "/" + this.smtpPassword);

Properties p = new Properties();

p.put("mail.smtp.auth", "true");

mailSender.setJavaMailProperties(p);

//设置用户名

mailSender.setUsername(this.smtpUser);

//设置密码

mailSender.setPassword(this.smtpPassword);

}

mailSender.setDefaultEncoding("gb2312");

//设置主机

mailSender.setHost(this.smtpServer);

logger.info("Set properties complete.");

//生成消息

MimeMessage message = mailSender.createMimeMessage();

MimeMailMessage mm = new MimeMailMessage(message);

//处理抄送

String[] cc = to.split(",");

String[] bcc = new String [cc.length-1];

if (cc.length > 1) {

for(int i = 0;i<cc.length;i++){

if(i==0){

to = cc[0].trim();

}else {

bcc[i-1] = cc[i].trim();

}

}

mm.setBcc(bcc);

}

//设置显示邮件

mm.setFrom(from);

//设置发送到邮箱

mm.setTo(to);

//设置标题

mm.setSubject(subject);

//multipart 设置附件

Multipart mp = new MimeMultipart();

MimeBodyPart mbp1 = new MimeBodyPart();

mbp1.setContent(content, "text/html;charset=gb2312");

mp.addBodyPart(mbp1);

logger.info("Set MimeMailMessage complete.");

int i = 0;

//处理附件

for (Object Attachment : fileAttachments) {

String fileAttachment = Attachment + "";

if (!StringUtils.isBlank(fileAttachment)) {

File file = new File(fileAttachment);

if (!file.exists()) {

throw new IOException("File Not Exists:" + fileAttachment);

}

MimeBodyPart mbp2 = new MimeBodyPart();

DataSource source = new FileDataSource(file);

mbp2.setDataHandler(new DataHandler(source));

String h = MimeUtility.encodeText(file.getName());

mbp2.setFileName(MimeUtility.encodeText(sourceFileName.get(i) + ""));

i++;

logger.info(mbp2.getFileName());

Enumeration e = mbp2.getAllHeaders();

while (e.hasMoreElements()) {

Header header = (Header) e.nextElement();

logger.info(header.getName() + "->" + header.getValue());

}

mp.addBodyPart(mbp2);

}

}

//设置内容

message.setContent(mp);

//multipart end

//发送消息

mailSender.send(message);

logger.info("email sent to:" + to);

}

public void setSmtpServer(String smtpServer) {

this.smtpServer = smtpServer;

}

public void setSmtpUser(String smtpUser) {

this.smtpUser = smtpUser;

}

public void setSmtpPassword(String smtpPassword) {

this.smtpPassword = smtpPassword;

}

}

最后方法调用:
_mailSender = new MailSender();
_mailSender.setSmtpServer("smtp.126.com");
_mailSender.setSmtpUser("you mail name");
_mailSender.setSmtpPassword("you mail password ");
List _files = new ArrayList<String>();//文件路径
//添加文件路径
List _sourceFileName= new ArrayList<String>();//名称
//添加名称
_mailSender.sendMail("showmail" , "[email protected],[email protected]" , "nihao" , "bucuo" , _files, _sourceFileName);

你可能感兴趣的:(javamail)