使用邮件模板(freemarker.jar)发送邮件

Posted 写最少的代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用邮件模板(freemarker.jar)发送邮件相关的知识,希望对你有一定的参考价值。

1.把freemarker.jar架包添加到项目中

2.创建模板文件,以*.ftl(后缀名是ftl)命名,模板示例如下

 1 <html>
 2 <head>
 3     <meta http-equiv="content-type" content="text/html;charset=utf-8">
 4 </head>
 5 <body>
 6     <font color="blue" size="4" face="Arial">
 7      尊敬的${user}:
 8     </font>
 9     <br/><br/>
10         <font color="blue" size="4" face="Arial">
11         &nbsp;&nbsp;恭喜您使用系统!请保管您的账号,如果登录时忘记密码
12         可以在网站登录页找回。<br/>
13         <br/><br/>系统管理员
14         </font>
15 </body>
16 </html>

 

3.发送邮件示例

 1 package cn.bd.mail.template;
 2 
 3 import java.io.IOException;
 4 import java.util.HashMap;
 5 import java.util.Map;
 6 
 7 import javax.mail.MessagingException;
 8 import javax.mail.internet.MimeMessage;
 9 
10 import org.springframework.mail.javamail.JavaMailSender;
11 import org.springframework.mail.javamail.MimeMessageHelper;
12 import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
13 import freemarker.template.Configuration;
14 import freemarker.template.Template;
15 import freemarker.template.TemplateException;
16 
17 public class MailService {
18     private JavaMailSender mailSender;
19     private Configuration freeMarkerConfiguration;
20     public void setMailSender(JavaMailSender mailSender) {
21         this.mailSender = mailSender;
22     }
23     public void setFreeMarkerConfiguration(Configuration freeMarkerConfiguration) {
24         this.freeMarkerConfiguration = freeMarkerConfiguration;
25     }
26     
27     private String getMailText(){
28         String htmlText="";
29         try{
30             //获取模板实例
31             Template template=freeMarkerConfiguration.getTemplate("mail.ftl");//mail.ftl就是模板文件
32             //通过Map传递动态数据
33             Map map=new HashMap();
34             map.put("user", "测试");
35             //解析模板文件
36             htmlText=FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
37         }catch(IOException e){
38             e.printStackTrace();
39         }catch(TemplateException e){
40             e.printStackTrace();
41         }catch(Exception e){
42             e.printStackTrace();
43         }
44         return htmlText;
45     }
46     
47     public void sendMail() throws MessagingException{
48         MimeMessage mimeMessage=mailSender.createMimeMessage();
49         MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true,"UTF-8");
50         helper.setFrom("[email protected]");//发送人
51         helper.setTo("[email protected]");//邮件接收人
52         helper.setSubject("标题....");
53         helper.setText(getMailText(),true);//设置HTML格式邮件内容
54         mailSender.send(mimeMessage);
55     }
56     
57 }

 

 

4.Spring容器的配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans
 3     xmlns="http://www.springframework.org/schema/beans"
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5     xmlns:p="http://www.springframework.org/schema/p"
 6     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 7                         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
 8 
 9     <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
10         <property name="host" value="smtp.163.com"></property> <!-- 服务器名 -->
11         <property name="port" value="25"></property> <!-- 端口号 -->
12         <property name="username" value="13599057417"></property><!-- 用户名 -->
13         <property name="password" value="luofuxiang"></property><!-- 密码 -->
14         <property name="protocol" value="smtp"></property> <!-- 协议 -->
15         <property name="defaultEncoding" value="utf-8"></property>
16         <property name="javaMailProperties">
17             <props>
18                 <prop key="mail.smtp.auth">true</prop>
19             </props>
20         </property>
21     </bean>
22     <bean id="freeMarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
23         <property name="templateLoaderPath" value="/cn/bd/mail/template"></property> <!-- 指定模板(mail.ftl)路径 -->
24         <!-- 设置FreeMarker环境变量 -->
25         <property name="freemarkerSettings">
26             <props>
27                 <prop key="default_encoding">UTF-8</prop>
28             </props>
29         </property>
30     </bean>
31     <!-- 配置bean:MailService -->
32     <bean id="mailService" class="cn.bd.mail.template.MailService">
33         <property name="mailSender" ref="mailSender"></property><!-- 为属性注入值 -->
34         <property name="freeMarkerConfiguration" ref="freeMarkerConfiguration"></property><!-- 给属性注入值 -->
35     </bean>
36 </beans> 

 

以上是关于使用邮件模板(freemarker.jar)发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

JavaXMail发送邮件功能实现

使用flask-mail扩展发送邮件

Azure : 通过 SendGrid 发送邮件

邮件发送平台哪个最好?一站式邮件发送平台推荐!

Python 邮件发送

Access 2016 定时发送自动电子邮件