package cn.org.rapid_framework.mail;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.apache.commons.lang.StringUtils;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.MimeMailMessage;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.util.Assert;
/**
* 邮件消息创建的工具类
* @author badqiu
*
*/
public class SimpleMailMessageUtils {
/**
* 创建html类型的邮件
*/
public static HtmlMimeMessagePreparator toHtmlMsg(final SimpleMailMessage msg) {
return toHtmlMsg(msg,null);
}
/**
* 创建html类型的邮件
* @param msg 邮件消息
* @param fromPersonal 发件人的名称
* @return
*/
public static HtmlMimeMessagePreparator toHtmlMsg(final SimpleMailMessage msg, final String fromPersonal) {
return new HtmlMimeMessagePreparator(msg,fromPersonal);
}
public static class HtmlMimeMessagePreparator implements MimeMessagePreparator{
private SimpleMailMessage simpleMailMessage;
private String fromPersonal;
public HtmlMimeMessagePreparator(SimpleMailMessage simpleMailMessage) {
this(simpleMailMessage,null);
}
public HtmlMimeMessagePreparator(SimpleMailMessage simpleMailMessage,String fromPersonal) {
super();
setSimpleMailMessage(simpleMailMessage);
this.fromPersonal = fromPersonal;
}
public SimpleMailMessage getSimpleMailMessage() {
return simpleMailMessage;
}
public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
Assert.notNull(simpleMailMessage,"simpleMailMessage must be not null");
this.simpleMailMessage = simpleMailMessage;
}
public String getFromPersonal() {
return fromPersonal;
}
public void setFromPersonal(String fromPersonal) {
this.fromPersonal = fromPersonal;
}
public void prepare(MimeMessage mimeMessage) throws Exception {
simpleMailMessage.copyTo(new MimeMailMessage(mimeMessage));
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,mimeMessage.getEncoding());
helper.setText(simpleMailMessage.getText(),true);
if(StringUtils.isNotEmpty(fromPersonal)) {
mimeMessage.setFrom(new InternetAddress(simpleMailMessage.getFrom(),fromPersonal));
}
}
}
}