zoukankan      html  css  js  c++  java
  • SpringBoot整合邮件发送(thymeleaf和freemarker)

    一、创建并导入依赖

       

    <dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-mail</artifactId>

    </dependency>

    <dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

    <dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-thymeleaf</artifactId>

    </dependency>

    <dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-freemarker</artifactId>

    </dependency>

       

       

       

    二、相关配置和代码

       

    2.1)application.properites

       

    spring.mail.host=smtp.163.com

    #spring.mail.port=587这是qq的端口,网易不需要

    spring.mail.username=hufei1639670695@163.com

    spring.mail.password=xxxxxxxxxxx

    spring.mail.default-encoding=utf-8

    spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

    #将发送邮件得过程打印在控制台

    spring.mail.properties.mail.debug=true

       

    2.2)Test测试

       

    2.2.1)发送一个普通邮件

       

       

    JavaMailSender是SpringBoot自动化的一个发送邮件类

    TemplateEngine是Thymeleaf的模板操作类

    @Test

    void contextLoads(){

    //顾名思义,一个简单的消息注定不能发送附近和html

    SimpleMailMessage mailMessage=new SimpleMailMessage();

    //邮件标题

    mailMessage.setSubject("这是一封测试邮件");

    //内容

    mailMessage.setText("这是一封测试内容");

    //来自谁

    mailMessage.setFrom("hufei1639670695@163.com");

    mailMessage.setSentDate(newDate());

    //也可以是数组,群发

    //发给谁

    mailMessage.setTo("hufei1639670695@gmail.com");

    //抄送,一同收到邮件得用户可以看到,收到该邮件的其他人

    //mailMessage.setCc();

    //匿抄,别人不会看见同时收到信息得人

    //mailMessage.setBcc();

    javaMailSender.send(mailMessage);

    }

       

    2.2.2)发送一个带有附近的邮件

       

    @Test

    void test1() throws MessagingException{

    //多用途邮件扩展

    MimeMessage mimeMessage=javaMailSender.createMimeMessage();

    //true表示是否创建支持替代文本、行内元素和附件的多部分消息

    MimeMessageHelpermimeMessageHelper=newMimeMessageHelper(mimeMessage,true);

    mimeMessageHelper.setSubject("这是一封测试邮件(带附件)");

    mimeMessageHelper.setText("这是一封测试内容");

    mimeMessageHelper.setFrom("hufei1639670695@163.com");

    mimeMessageHelper.setSentDate(newDate());

    mimeMessageHelper.setTo("hufei1639670695@gmail.com");

    //顾名思义,添加附件

    mimeMessageHelper.addAttachment("fern.jpg",newFile("D:\User\fern.jpg"));

    javaMailSender.send(mimeMessage);

       

    }

       

       

    2.2.3)发送一个html内容的邮件

       

    @Test

    void test2()throws MessagingException{

    MimeMessagemimeMessage=javaMailSender.createMimeMessage();

    MimeMessageHelpermimeMessageHelper=newMimeMessageHelper(mimeMessage,true);

    mimeMessageHelper.setSubject("这是一封测试邮件(html");

    //true表示开启html

    mimeMessageHelper.setText("这是一封测试邮件内容<imagesrc='cid:01'></image>",true);

    //mimeMessageHelper.setText("这是一封测试邮件内容","<imagesrc='cid:01'></image>");

    mimeMessageHelper.addInline("01",newFile("D:\User\fern.jpg"));

    mimeMessageHelper.setFrom("hufei1639670695@163.com");

    mimeMessageHelper.setSentDate(newDate());

    mimeMessageHelper.setTo("hufei1639670695@gmail.com");

    javaMailSender.send(mimeMessage);

    }

       

       

    2.2.4)使用thymeleaf邮件模板发送一个邮件

       

    <!DOCTYPEhtml>

    <htmllang="en"xmlns:th="http://www.thymeleaf.org/">

    <head>

    <metacharset="UTF-8">

    <title>Title</title>

    </head>

    <body>

    <div>

    hello<spanth:text="${username}"></span>,加入荣华富贵大家庭!!!

    </div>

    您的入职信息如下

    <table>

    <tr>

    <td>职位</td>

    <td th:text="${position}"></td>

    </tr>

    <tr>

    <td>职位</td>

    <td th:text="${joblevel}"></td>

    </tr>

    <tr>

    <td>薪水</td>

    <td th:text="${salary}"></td>

    </tr>

    <tr>

    <td>部门</td>

    <td th:text="${dep}"></td>

    </tr>

    </table>

    <divstyle="color:#ffd453">

    希望在未来的日子里,携手共进!

    </div>

    </body>

    </html>

       

    @Test

    void test3() throws MessagingException{

    MimeMessagemimeMessage=javaMailSender.createMimeMessage();

    MimeMessageHelpermimeMessageHelper=newMimeMessageHelper(mimeMessage,true);

    mimeMessageHelper.setSubject("欢迎加入荣华富贵大家庭(thymeleaf)");

    //操作html的类

    Contextcontext=newContext();

    context.setVariable("username","陈翔");

    context.setVariable("position","java工程师");

    context.setVariable("joblevel","高级工程师");

    context.setVariable("salary","10000");

    context.setVariable("dep","研发部");

    //html转成字符串发到邮箱

    Stringprocess=templateEngine.process("mail.html",context);

    //true开启html

    mimeMessageHelper.setText(process,true);

    mimeMessageHelper.setFrom("hufei1639670695@163.com");

    mimeMessageHelper.setSentDate(newDate());

    mimeMessageHelper.setTo("hufei1639670695@gmail.com");

    javaMailSender.send(mimeMessage);

    }

       

       

    2.2.5)使用freemarker邮件模板发送一个邮件

       

       

    <!DOCTYPEhtml>

    <htmllang="en">

    <head>

    <metacharset="UTF-8">

    <title>Title</title>

    </head>

    <body>

    <div>

    hello<span>${username}</span>,加入荣华富贵大家庭!!!

    </div>

    您的入职信息如下

    <table>

    <tr>

    <td>职位</td>

    <td>${position}</td>

    </tr>

    <tr>

    <td>职位</td>

    <td>${joblevel}</td>

    </tr>

    <tr>

    <td>薪水</td>

    <td>${salary}</td>

    </tr>

    <tr>

    <td>部门</td>

    <td>${dep}</td>

    </tr>

    </table>

    <divstyle="color:#ffd453">

    希望在未来的日子里,携手共进!

    </div>

    </body>

    </html>

       

       

    freemarker没有thymeleaf方便需要自己手写,不像thymeleaf提供了模板

       

    @Test

    void test4() throws MessagingException,IOException,TemplateException{

    MimeMessagemimeMessage=javaMailSender.createMimeMessage();

    MimeMessageHelpermimeMessageHelper=newMimeMessageHelper(mimeMessage,true);

    mimeMessageHelper.setSubject("欢迎加入荣华富贵大家庭(freemarker)");

    //配置版本

    Configurationconfiguration=newConfiguration(Configuration.VERSION_2_3_29);

    //freemarker所在的位置

    configuration.setClassLoaderForTemplateLoading(this.getClass().getClassLoader(),"templates");

    //freemarker文件名

    Templatetemplate=configuration.getTemplate("mail.ftlh");

    Map<String,String>map=newHashMap<>();

    map.put("username","陈翔");

    map.put("position","java工程师");

    map.put("joblevel","高级工程师");

    map.put("salary","10000");

    map.put("dep","研发部");

    StringWriterwriter=newStringWriter();

    template.process(map,writer);

    mimeMessageHelper.setText(writer.toString(),true);

    mimeMessageHelper.setFrom("hufei1639670695@163.com");

    mimeMessageHelper.setSentDate(newDate());

    mimeMessageHelper.setTo("hufei1639670695@gmail.com");

    javaMailSender.send(mimeMessage);

    }

       

    上的配置版本可以这么查看

       

       

  • 相关阅读:
    [LeetCode 1029] Two City Scheduling
    POJ 2342 Anniversary party (树形DP入门)
    Nowcoder 106 C.Professional Manager(统计并查集的个数)
    2018 GDCPC 省赛总结
    CF 977 F. Consecutive Subsequence
    Uva 12325 Zombie's Treasure Chest (贪心,分类讨论)
    Poj 2337 Catenyms(有向图DFS求欧拉通路)
    POJ 1236 Network of Schools (强连通分量缩点求度数)
    POJ 1144 Network (求割点)
    POJ 3310 Caterpillar(图的度的判定)
  • 原文地址:https://www.cnblogs.com/fernfei/p/12225760.html
Copyright © 2011-2022 走看看