Spring+freemarker发送邮件

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;
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值