• 4、SpringBoot------邮件发送(2)


    开发工具:STS

    代码下载链接:https://github.com/theIndoorTrain/Springboot/tree/0d6194d6ea2d7f4e19791a3d3f3167f861f6453d

    前言:

    在上一篇博客中,我们写了简单邮件的发送和带附件的邮件发送。

    在本节里,我们来写模板邮件发送。

    模板邮件是什么呢?

    模板邮件:

    我们定义好邮件的主题,封装进一个html中,然后动态的改变其中的某些值,比如用户名。。。。。

    然后我们的邮件内容,就不需要每次发送都要定义了。

    而且这种方式,有利于系统的解耦,更方便模板邮件内容的完善与更改。

    在sproingboot中,支持的前端模板有FreeMarker和Thymeleaf。

    这里我们用Thymeleaf来实现。


    模板邮件发送

    我们假设发送给用户一封激活邮件

    1.添加依赖:

    1         <!--添加thymeleaf依赖  -->
    2         <dependency>
    3             <groupId>org.springframework.boot</groupId>
    4             <artifactId>spring-boot-starter-thymeleaf</artifactId>
    5         </dependency>

    2.添加模板:

     1 <!DOCTYPE html>
     2 <html lang="zh" xmlns:th="http://www.thymeleaf.org">
     3 <head>
     4 <meta charset="UTF-8" >
     5 <title>账号激活邮件</title>
     6 </head>
     7 <body>
     8  您好,这是验证邮件,请点击下面的链接完成验证,<br/>
     9    <a href="#" th:href="@{ http://www.xm.com/eamil/{id}(id=${id}) }">激活账号</a>
    10 </body>
    11 </html>

    3.定义发送模板邮件业务接口:

    1     /**
    2      * 发送模板邮件
    3      * @param to:收件人
    4      * @param subject: 标题
    5      * @param info:模板名
    6      */
    7     void sendTemplateMail(String to,String subject,String info);

    4.实现发送模板邮件业务:

    实现过程:

    (1)实现接口

    (2)定义模板解析器

    (3)定义参数

    (4)绑定参数到模板

    (6)解析模板为字符串

    (6)封装信件

    (7)发送邮件

     1 package com.xm.service.impl;
     2 
     3 import java.io.File;
     4 
     5 import javax.mail.MessagingException;
     6 import javax.mail.internet.MimeMessage;
     7 
     8 import org.springframework.beans.factory.annotation.Autowired;
     9 import org.springframework.beans.factory.annotation.Value;
    10 import org.springframework.mail.SimpleMailMessage;
    11 import org.springframework.mail.javamail.JavaMailSender;
    12 import org.springframework.mail.javamail.MimeMessageHelper;
    13 import org.springframework.stereotype.Service;
    14 import org.thymeleaf.TemplateEngine;
    15 import org.thymeleaf.context.Context;
    16 
    17 import com.xm.service.EmailService;
    18 /**
    19  * 邮件发送业务实现
    20  * @author xm
    21  *
    22  */
    23 @Service
    24 public class EmailServiceImpl implements EmailService {
    25     
    26     //获取发送者信息
    27     @Value("${mail.from.addr}")
    28     private String from; 
    29     
    30     //定义邮件发送者
    31     @Autowired
    32     private JavaMailSender sender;
    33     
    34     @Autowired
    35     //模板解析
    36     private TemplateEngine templateEngine;
    37 
    38     
    39 
    40     @Override
    41     public void sendTemplateMail(String to, String subject, String info) {
    42         //创建多用途互联网邮件
    43                 MimeMessage message = sender.createMimeMessage();
    44                 
    45                 try {
    46                     //封装多用途互联网邮件
    47                     MimeMessageHelper helper = new MimeMessageHelper(message, true);
    48                     helper.setFrom(from);
    49                     helper.setTo(to);
    50                     helper.setSubject(subject);
    51                     //封装模板参数
    52                     Context context = new Context();
    53                     context.setVariable("id", 1);
    54                     //解析模板
    55                     String content = templateEngine.process(info, context);
    56                     
    57                     //true:识别Html
    58                     helper.setText(content, true);
    59                     
    60                 } catch (Exception e) {
    61                     e.printStackTrace();
    62                 }
    63                 sender.send(message);
    64     }
    65 
    66 }

     

    5.定义测试:

    1     @Test
    2     /**
    3      * 发送模板邮件
    4      */
    5     public void sendTemplateMail() {
    6         emailService.sendTemplateMail("1373572467@qq.com", "激活邮件","EmailActivation");
    7     }

    测试结果截图:


                           2018-07-16

  • 相关阅读:
    2018年国内就业薪资高的7大编程语言排行
    前端css实现最基本的时间轴
    前端css实现最基本的时间轴
    用Canvas画一个刮刮乐
    用Canvas画一个刮刮乐
    「干货」从菜鸟到大神,前端学习书籍推荐
    洛谷P3379 【模板】最近公共祖先(LCA)
    洛谷 P1359 租用游艇
    位运算...
    洛谷P2782 友好城市
  • 原文地址:https://www.cnblogs.com/TimerHotel/p/springboot04.html
Copyright © 2020-2023  润新知