`
tangxininjava
  • 浏览: 96680 次
  • 性别: Icon_minigender_1
  • 来自: 遂宁
社区版块
存档分类
最新评论

Spring+freemarker发送邮件

    博客分类:
  • J2EE
 
阅读更多
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;
	}

}

 

分享到:
评论

相关推荐

    Spring+Freemarker 使用163发HTML格式的邮件

    标题 "Spring+Freemarker 使用163发HTML格式的邮件" ...在Spring+Freemarker发送邮件的场景下,这些库可能包含Spring的相关jar包,Freemarker的库,以及JavaMail API等。确保正确引入这些库是项目能够成功运行的关键。

    spring整合freemarker发送邮件例子

    接着,创建一个邮件服务类,该类将利用Spring的`JavaMailSender`接口发送邮件。在发送邮件时,我们可以使用Freemarker来生成邮件的HTML内容。首先,编写一个Freemarker模板文件,比如`email.ftl`,在这个模板中可以...

    Spring 使用Freemarker发送邮件的一个简单模板(代码不完整)

    标题“Spring使用Freemarker发送邮件的一个简单模板”指的是通过Spring的JavaMailSender接口和Freemarker模板来生成和发送邮件。首先,我们需要在项目中引入Spring和Freemarker的相关依赖,确保能够使用这两个库的...

    spring + mail + 发送邮件完整 demo (含注释)

    本教程将围绕"Spring + Mail"的组合,结合Freemarker模板引擎,提供一个完整的发送邮件的Demo。 首先,我们需要在项目中添加相关的依赖。Spring框架通常与Spring Boot一起使用,这样可以简化配置。在`pom.xml`或`...

    struts2+spring3.0+mybatis3.0.4集成的邮件发送实例(可上传附件)

    在这个实例中,我们可能有一个名为`SendMailAction`的类,该类中包含了发送邮件的相关逻辑。Struts2配置文件(`struts.xml`)需要进行相应的配置,以映射HTTP请求到这个Action。 Spring3.0则扮演了服务层的角色,它...

    Spring Boot整合邮件发送并保存历史发送邮箱

    项目主要是使用 Spring Boot 发送邮件,主要的技术点有: 1、Spring Boot +mybatis的整合 2、Spring Boot项目中jsp的使用 3、Spring Boot 发送邮件(文本格式的邮件、发送HTML格式的邮件、发送带附件 的邮件、...

    SpringBoot集成Freemarker+FlyingSaucer实现pdf在线预览.pdf

    该技术方案可以应用于各种在线文档预览、报表生成、电子邮件发送等场景。 一、Freemarker模板引擎 Freemarker是Java中的一款模板引擎,可以根据模板和参数生成输出结果。在本方案中,Freemarker用于生成HTML模板,...

    springmvc+freemarker带sql的登录事例

    在本示例中,我们将探讨如何使用Spring MVC和FreeMarker框架构建一个带有SQL数据库支持的登录系统。Spring MVC是Spring框架的一部分,它提供了一个模型-视图-控制器(MVC)架构,使得开发者可以轻松地处理Web应用的...

    SpringBoot使用FreeMarker模板发送邮件

    通过springboot 整合freemarker模板引擎,自动发送html格式邮件

    spring 发送邮件

    在Spring MVC框架中,发送邮件是一项常见的功能,用于与用户进行互动或传递重要信息。`JavaMailSenderImpl`是Spring提供的一个接口实现,用于发送电子邮件。在这个过程中,我们将深入探讨如何配置和使用`...

    FreeMarker模板实现邮件发送

    1.这是一个在根目录下的mail.properties文件中配好发送邮件地址和接收邮箱地址的实例,利用freeMarker模板作为展示,在测试类中提供配固定接收邮箱地址和手动输入接收邮箱地址两种方法进行发送试验,结果都能实现...

Global site tag (gtag.js) - Google Analytics