package com.tang.common.util;
public class MailSenderInfo {
// 发送邮件的服务器的IP和端口
private String mailServerHost;
private String mailServerPort = "25";
// 邮件发送者的地址
private String fromAddress;
// 邮件接收者的地址
private String[] toAddress;
/**
* 操送人地址列表
*/
private String[] ccAddress;
/**
* 暗送人地址列表
*/
private String[] bccAddress;
// 登陆邮件发送服务器的用户名和密码
private String username;
private String password;
// 是否需要身份验证
private boolean validate = false;
// 邮件主题
private String subject;
// 邮件的文本内容
private String content;
// 邮件附件的文件名
private String[] attachFileNames;
// 內容是否采用html形式
private boolean htmlContent = true;
public boolean getHtmlContent() {
return htmlContent;
}
public void setHtmlContent(boolean htmlContent) {
this.htmlContent = htmlContent;
}
public String getMailServerHost() {
return mailServerHost;
}
public void setMailServerHost(String mailServerHost) {
this.mailServerHost = mailServerHost;
}
public String getMailServerPort() {
return mailServerPort;
}
public void setMailServerPort(String mailServerPort) {
this.mailServerPort = mailServerPort;
}
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean isValidate() {
return validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String[] getAttachFileNames() {
return attachFileNames;
}
public void setAttachFileNames(String[] attachFileNames) {
this.attachFileNames = attachFileNames;
}
public String[] getCcAddress() {
return ccAddress;
}
public void setCcAddress(String[] ccAddress) {
this.ccAddress = ccAddress;
}
public String[] getBccAddress() {
return bccAddress;
}
public void setBccAddress(String[] bccAddress) {
this.bccAddress = bccAddress;
}
public void setToAddress(String[] toAddress) {
this.toAddress = toAddress;
}
public String[] getToAddress() {
return toAddress;
}
/**
*
* 方法描述: (获取大客的邮箱设置)
* 作 者: 唐欣
* 日 期: Nov 28, 2012-9:33:05 AM
* 返回类型: MailSenderInfo
*/
public MailSenderInfo setSystemSender(MailSenderInfo instance){
if (instance==null)
{
instance = new MailSenderInfo();
}
instance.setMailServerHost("smtp.demo.cn");
instance.setUsername("demo");
instance.setPassword("demo");
instance.setValidate(true);
instance.setFromAddress("demo@demo.cn");
return instance;
}
/**
*
* 方法描述: (获取毕马威邮件设置)
* 作 者: 唐欣
* 日 期: Nov 28, 2012-9:22:11 AM
* 返回类型: MailSenderInfo
*/
public MailSenderInfo setKpmgSender(MailSenderInfo instance){
if (instance==null)
{
instance = new MailSenderInfo();
}
instance.setMailServerHost("smtp.demo.cn");
instance.setUsername("demo");
instance.setPassword("demo");
instance.setValidate(true);
instance.setFromAddress("demo@demo.cn");
return instance;
}
}
常用操作:
// 设置邮箱基本信息
MailSenderInfo mailSenderInfo = new MailSenderInfo();
mailSenderInfo.setToAddress(emailLog.getEmailTo().replace("/", ";")
.replace("\\", ";").replace(",", ";").split(";"));
mailSenderInfo.setContent(emailLog.getEmailContent());
//邮件主题添加时间戳和乘机人姓名避免成为垃圾邮件
String timeStamp = com.tang.tmc.util.DateUtil.format(new Date(),com.tang.tmc.util.DateUtil.FORMAT);
mailSenderInfo.setSubject(DataDictionaryUtil.get("EMAIL.SUBJECT."
+ emailLog.getEmailBusType())+timeStamp+psgNames.toString());
// 根据大客户号设置不同邮箱设置
boolean result = emailLogServices.sendMail(mailSenderInfo, membNo);
emailLog.setEmailSendStatus(result ? "1" : "0");
邮件的内容生成使用FreeMarker
String templateName = emailBusType + "_" + emailLog.getEmailTemplateType() + ".ftl";
logger.info("模板文件名: " + templateName);
return getEmailContentByTemplate(templateName, map);
/***************************************************************************************************************************************
* 通过模板获取邮件内容
* getEmailContentByTemplate
* @return
*/
public String getEmailContentByTemplate(String templateName,
Map<String, Object> data)
{
try
{
Configuration configuration = markerConfigurer.getConfiguration();
Template template = configuration.getTemplate(templateName);
return FreeMarkerTemplateUtils.processTemplateIntoString(template,
data);
} catch (Exception ex)
{
throw new AppRuntimeException("", "生成邮件内容时出错", ex);
}
}
markerConfigurer的配置 begin
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
private FreeMarkerConfigurer markerConfigurer;
public FreeMarkerConfigurer getMarkerConfigurer()
{
return markerConfigurer;
}
public void setMarkerConfigurer(FreeMarkerConfigurer markerConfigurer)
{
this.markerConfigurer = markerConfigurer;
}
<property name="markerConfigurer" ref="freeMarkerConfigurer" />
<!-- freemarker config -->
<bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/freemakertemplate/" />
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">0</prop>
<prop key="default_encoding">GBK</prop>
<prop key="locale">zh_CN</prop>
</props>
</property>
</bean>
markerConfigurer的配置 end
发送邮件方法:
package com.tang.common.util;
import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.apache.log4j.Logger;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
/**
* 发送邮件的工具类
*/
public class EmailUtil {
private static Logger logger = Logger.getLogger(EmailUtil.class);
public static boolean sendMail(MailSenderInfo mailInfo) {
boolean result = false;
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
// 设定mail server
senderImpl.setHost(mailInfo.getMailServerHost());
senderImpl.setUsername(mailInfo.getUsername());
senderImpl.setPassword(mailInfo.getPassword());
Properties props = System.getProperties();
props.put("mail.smtp.auth", "true");
senderImpl.setJavaMailProperties(props);
// 建立HTML邮件消息
MimeMessage mailMessage = senderImpl.createMimeMessage();
// true表示开始附件模式
MimeMessageHelper messageHelper = null;
try {
messageHelper = new MimeMessageHelper(mailMessage, true, "gbk");
// 设置收件人,寄件人
messageHelper.setTo(mailInfo.getToAddress());
messageHelper.setFrom(mailInfo.getFromAddress());
if (mailInfo.getBccAddress() != null){
messageHelper.setBcc(mailInfo.getBccAddress());
}
if (mailInfo.getCcAddress() != null){
messageHelper.setCc(mailInfo.getCcAddress());
}
messageHelper.setSubject(mailInfo.getSubject());
// true 表示启动HTML格式的邮件
messageHelper.setText(mailInfo.getContent(), mailInfo.getHtmlContent());
// 发送邮件
senderImpl.send(mailMessage);
result = true;
} catch (MessagingException ex) {
logger.error("sendMail exception", ex);
}
return result;
}
}