spring,freemarker,异步发邮件
来源:互联网 发布:php exec 返回1 编辑:程序博客网 时间:2024/05/20 15:10
1.引入jar.
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.6.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.1.6.RELEASE</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.6.RELEASE</version></dependency><dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.20</version></dependency><dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4</version></dependency>
2.mailtemplates模板目录下制作demo.ftl模板
demo.ftl
3.spring配置文件<a href="http://www.xxx.com">你好${username}</a>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <bean id="templateEmail" class="com.huazhu.picc.base.TemplateEmail"> <property name="sender" ref="mailsender"></property> <property name="threadPool" ref="threadPool"></property> <property name="freeMarkerConfigurer" ref="freeMarker"></property> </bean> <bean id="mailsender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host"> <value>mail.xxx.com</value> </property> <property name="username"> <value>aaa</value> </property> <property name="password"> <value>bbb</value> </property> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.timeout">25000</prop> </props> </property> </bean> <bean id="freeMarker" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="classpath:mailtemplates"/><!--指定模板文件目录--> <property name="freemarkerSettings"><!-- 设置FreeMarker环境属性--> <props> <prop key="template_update_delay">1800</prop><!--刷新模板的周期,单位为秒--> <prop key="default_encoding">UTF-8</prop><!--模板的编码格式 --> <prop key="locale">zh_CN</prop><!-- 本地化设置--> </props> </property> </bean> <bean id="threadPool" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <!-- 核心线程数 --> <property name="corePoolSize" value="4" /> <!-- 最大线程数 --> <property name="maxPoolSize" value="30" /> <!-- 队列最大长度 >=mainExecutor.maxSize --> <property name="queueCapacity" value="50" /> <!-- 线程池维护线程所允许的空闲时间 --> <property name="keepAliveSeconds" value="300" /> <!-- 线程池对拒绝任务(无线程可用)的处理策略 --> <property name="rejectedExecutionHandler"> <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy"/> </property> </bean></beans>
4.发送类
import freemarker.template.Template;import org.springframework.mail.MailException;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.mail.javamail.MimeMessageHelper;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;import javax.mail.MessagingException;import javax.mail.internet.MimeMessage;import java.util.Map;/** * 发送邮件 可以自己编写html模板 * Created by aaa on 2017/5/12. */public class TemplateEmail { private JavaMailSender sender; private ThreadPoolTaskExecutor threadPool; private FreeMarkerConfigurer freeMarkerConfigurer=null;//FreeMarker的技术类 public void setFreeMarkerConfigurer(FreeMarkerConfigurer freeMarkerConfigurer) { this.freeMarkerConfigurer = freeMarkerConfigurer; } public void setSender(JavaMailSender sender) { this.sender = sender; } public void setThreadPool(ThreadPoolTaskExecutor threadPool) { this.threadPool = threadPool; } /** * 生成html模板字符串 * @param root 存储动态数据的map * @return */ private String getMailText(Map<String,Object> root,String templateName){ String htmlText=""; try { //通过指定模板名获取FreeMarker模板实例 Template tpl=freeMarkerConfigurer.getConfiguration().getTemplate(templateName); htmlText=FreeMarkerTemplateUtils.processTemplateIntoString(tpl,root); } catch (Exception e) { e.printStackTrace(); } return htmlText; } /** * 发送邮件 * @param root 存储动态数据的map * @param toEmail 邮件地址 * @param subject 邮件主题 * @return */ public void sendTemplateMail(final Map<String,Object> root,final String toEmail,final String subject,final String templateName){ //异步发送邮件 threadPool.execute(new Runnable() { public void run() { try { MimeMessage msg=sender.createMimeMessage(); MimeMessageHelper helper=new MimeMessageHelper(msg,false,"utf-8");//由于是html邮件,不是mulitpart类型 helper.setFrom("b2b_service@xxx.com"); helper.setTo(toEmail); helper.setSubject(subject); String htmlText=getMailText(root,templateName);//使用模板生成html邮件内容 helper.setText(htmlText, true); sender.send(msg); } catch (MailException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } }); }}
5.测试
Map<String,Object> root = new HashMap<String,Object>();root.put("username", "ajun");templateEmail.sendTemplateMail(root, "xxx001@xxx.com", "主题标题", "demo.ftl");
0 0
- spring,freemarker,异步发邮件
- c#异步发邮件
- Spring发邮件
- spring发邮件!!!
- Spring 发邮件
- spring 发邮件
- 异步调用发邮件页面
- ActiveMQ--异步发邮件Demo
- 利用 spring+freemarker 发送邮件
- 利用 spring+freemarker 发送邮件
- Spring整合freemarker发送邮件
- 利用 spring+freemarker 发送邮件
- 利用 spring+freemarker 发送邮件
- Spring整合freemarker发送邮件
- 利用 spring+freemarker 发送邮件
- spring 异步发送邮件
- 用Spring来发邮件
- 怎样使用Spring发邮件?
- 一、我的Python之路 -- 初识
- 阻止445端口连接
- acm杭电HDU2177取(2堆)石子游戏(威佐夫博弈)
- Android Crash处理流程分析
- 网页抓取手机号
- spring,freemarker,异步发邮件
- 在MyEclipse中启动项目正常,但不能访问Tomcat默认主页解决办法
- powershell使用心得
- Spring Boot (一)
- 一站式学习Wireshark(二):应用Wireshark观察基本网络协议
- solr6.2从环境部署到与mysql整合到中文分词器到solrJ的使用
- js 字符串的一些常用方法
- 回文数的判断(三种方法)
- Regular expression examples in javascript