springboot系列(十五):如何实现静态邮件模板发送?你一定得会|超级详细,建议收藏
Posted bug菌¹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot系列(十五):如何实现静态邮件模板发送?你一定得会|超级详细,建议收藏相关的知识,希望对你有一定的参考价值。
👨🎓作者:bug菌
🎉简介:在CSDN、掘金等社区优质创作者,全网合计6w粉+,对一切技术都感兴趣,重心偏java方向,目前运营公众号[猿圈奇妙屋],欢迎小伙伴们的加入,一起秃头。
🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。
🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系bug菌处理。
嗨,家人们,我是bug菌呀,我又来啦。今天我们来聊点什么咧,OK,接着为大家更《springboot零基础入门教学》系列文章吧。希望能帮助更多的初学者们快速入门!
小伙伴们在批阅文章的过程中如果觉得文章对您有一丝丝帮助,还请别吝啬您手里的赞呀,大胆的把文章 点亮👍吧,您的点赞三连( 收藏⭐️+关注👨🎓+留言📃)就是对bug菌我创作道路上最好的鼓励与支持😘。时光不弃🏃🏻♀️,创作不停💕,加油☘️
一、前言🔥
续上篇,我们已经成功实现了邮件发送提醒,对吧,小伙伴跟着我一路看过来,是不是感觉轻松多了,毕竟篇幅我都不会很长。这样下去,每天学习一个知识点,一个月下来就是三十个知识点,日积月累,你就是下一个大佬啦。如果有小伙伴直接中途插入,还请麻烦先去看上几期的内容,要不然贸然跟着学,肯定要吃大亏,去我的专栏《springboot零基础入门教学》 从头开始跟进。
今天我就给大家带来点与Thymeleaf模板引擎相关的知识点,通常有些邮件会有格式要求,就是格式是固定的,不知道你们生活场景中是否有遇到,像这种需求,我们应该怎么实现呢?好啦,废话不多说,请接招!
二、业务场景🔥
1️⃣概念
首先,给大家科普一下什么是Thymeleaf:
Thymeleaf 是新一代 Java 模板引擎,它类似于 Velocity、FreeMarker 等传统 Java 模板引擎,但是与传统 Java 模板引擎不同的是,Thymeleaf 支持 html 原型。
同时,SpringBoot 也提供了对 Thymeleaf 的自动化配置解决方案,因此在 SpringBoot 中使用 Thymeleaf 非常方便,也是我们今天要讲的内容。
有朋友就可能会问了,为啥不用FreeMarker 啊,不是也可以。对的,FreeMarker也可以做模板,但是使用Thymeleaf ,预览非常方便啊,可直接在浏览器中打开,它就是一个.html 为后缀的静态网页。
所以今天我们就不用老一套啦,直接教大家如何使用Thymeleaf作为邮件发送模板,好吧?咱们接着往下看!
2️⃣引入Thymeleaf依赖
<!--Thymeleaf 静态模板jar包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
3️⃣自定义静态模板
我就先随便定义一个mail.html为例,作为右键模板。你们要是懒的自己弄,也可以先拿我的试试水好吧。
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"><head>
<meta charset="UTF-8">
<title>Thymeleaf邮件模板</title>
</head>
<body>
<p>这是一份学生名单:请查收</p>
<table border="1">
<tr>
<td>学校</td>
<td th:text="$school"></td>
</tr>
<tr>
<td>班级</td>
<td th:text="$className"></td>
</tr>
<tr>
<td>姓名</td>
<td th:text="$name"></td>
</tr></table><div style="color: red;">以上是一份学生名单!</div>
</body>
</html>
4️⃣发送邮件模板实现
a、首先我们先定义一个[静态模板邮件配置]的model参数体,注重代码需规范嘛。继承下mail这个vo,需要的小伙伴可以去上篇取,这里就不多重复了哈。
package com.example.demo.component.mail.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
/**
* 静态模板邮件配置
*
* @author luoYong
* @version 1.0
* @date 2022/1/18 11:17
*/
@ApiModel(value = "静态模板邮件配置",description = "静态模板邮件配置")
public class ThymeleafMail extends Mail
@ApiModelProperty("静态文件参数配置")
private List<Variable> variables;
@ApiModelProperty("静态文件名+后缀")
private String template;
public List<Variable> getVariables()
return variables;
public void setVariables(List<Variable> variables)
this.variables = variables;
public String getTemplate()
return template;
public void setTemplate(String template)
this.template = template;
至于为什么要配置这两个参数,那是因为在你静态模板配置发送的时候,必须要指定context.setVariable()
与 templateEngine.process()
两个方法属性,也就是你对应静态模板的固定参数赋值,所以需要,所以我就直接按所需要的参数进行封装配置了,如果你们有更好的思路或者想法, 那就按你们自己的来,我写的也只是给个大致的参考意见。
b、接着就是定义一个类方法,核心是实现邮件静态模板发送。代码具体实现如下:
/**
* 配置静态模板
*/
public void sendThymeleafMail(ThymeleafMail model) throws MessagingException
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper msg = new MimeMessageHelper(mimeMessage, true); //邮件发送者
msg.setFrom(model.getSendMailAccount()); //邮件接收者
msg.setTo(model.getAcceptMailAccount()); //邮件主题
msg.setSubject(model.getTheme()); //邮件发送时间
msg.setSentDate(model.getSendTime());
Context context = new Context(); //添加模板数据
model.getVariables().forEach(p ->
context.setVariable(p.getName(), p.getValue()); ); //给静态页面参数赋值
String process = templateEngine.process(model.getTemplate(), context);//指定静态页面模板
msg.setText(process, true);
javaMailSender.send(mimeMessage);
与发送附件邮件是一样的,都是使用了MimeMessage
与 MimeMessageHelper
这两个邮件构建类和邮件收发信息类,具体详细用户可以参考官网给的文档,这里我就不一一进行深入讲解啦,还请小伙伴们见谅。
c、接下来,就是测试环节了,还是老地方,在MailTest测试类中,写一个test cese,测试该方法是否有报错等逻辑问题。如下测试用例,你们也可以自己定义邮件内容:
/**
* 配置静态模板
*/
@Testpublic void testSendThymeleafMail() throws MessagingException
//模板对象初始化
ThymeleafMail mailModel = new ThymeleafMail();
mailModel.setTheme("这是一封测试邮件"); // 设置邮件主题
mailModel.setSendMailAccount("xxx@foxmail.com"); // 设置邮箱发送者
mailModel.setAcceptMailAccount("xxx@foxmail.com"); // 设置邮件接收者,可以有多个接收者
mailModel.setSendTime(new Date()); // 设置邮件发送日期
List<Variable> variables = new ArrayList<>();
Variable variable1 = new Variable();
variable1.setName("school");
variable1.setValue("清华附属小学");
Variable variable2 = new Variable();
variable2.setName("className");
variable2.setValue("六(1)班");
Variable variable3 = new Variable();
variable3.setName("name");
variable3.setValue("小罗");
variables.add(variable1);
variables.add(variable2);
variables.add(variable3);
mailModel.setVariables(variables);
mailModel.setTemplate("mail.html");//指定你刚才创建的静态页面
sendMailBuild.sendThymeleafMail(mailModel);
d、接下来就是运行testcase测试类 ,由此可见,静态模板邮件发送成功啦,邮件正文也是我所定义的模板格式!如下截图:
以上就已经测试完毕!虽然模板样式真有点丑,但这都不是主要关注点,主要是发送模板邮件成功了就行,毕竟有专业的前端工程师替我们 把关这部分模板样式的,所以就不需要我们后端开发操心啦,我的此篇教学任务也算是完成啦~冒昧问问,你们的测试通过了嘛?如果存在有发送失败或者发送报错的,请把你的问题打在评论区,咱们一起交流,我觉得一个人的力量是有限的,但是一群人的力量是无限的,互帮互助一直是中华的传统美德。
ok,以上就是我这期的全部内容啦,如果还想学习更多,你可以看看我的往期热文推荐哦,每天积累一个奇淫小知识,日积月累下去,你一定能成为令人敬仰的大佬的。好啦,咱们下期见~
三、往期推荐🔥
- springboot系列(一):如何创建springboot项目及启动
- springboot系列(三):多环境切换,实例演示
- springboot系列(四):stater入门
- springboot系列(五):史上最最最全springboot常用注解
- springboot系列(六):mysql配置及数据库查询
- springboot系列(七):如何通过mybatis-plus实现接口增删改查
- springboot系列(八):mybatis-plus之条件构造器使用手册
- springboot系列(九):mybatis-plus之如何自定义sql
- springboot系列(十):mybatis之xml映射文件>、<=等特殊符号写法
- springboot系列(十一):实现多数据源配置,开箱即用
- springboot系列(十二):如何实现邮件发送提醒,你一定得会(准备篇)
- springboot系列(十三):如何实现发送普通邮件?你一定得会
- springboot系列(十四):如何实现发送图片、doc文档等附件邮件?你一定得会
- springboot系列(十五):如何实现静态邮件模板发送?你一定得会
- springboot系列(十六):如何实现发送邮件提醒,附完整源码
- springboot系列(十七):集成在线接口文档Swagger2
- springboot系列(十八):如何Windows安装redis?你玩过么
- springboot系列(十九):如何集成redis?不会我教你
- springboot系列(二十):如何通过redis实现手机号验证码功能
- ... ...
四、文末🔥
如果还想要学习更多,小伙伴们可关注bug菌专门为大家创建的专栏《springboot零基础入门教学》,从无到有,从零到一!希望能帮助到更多小伙伴们。
我是bug菌,一名想走👣出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!
最后送大家两句我很喜欢的话,与诸君共勉!
☘️做你想做的人,没有时间限制,只要愿意,什么时候都可以start。
🍀你能从现在开始改变,也可以一成不变,这件事,没有规矩可言,你可以活出最精彩的自己。
💌如果文章对您有所帮助,就请留下您的赞吧!(#^.^#);
💝如果喜欢bug菌分享的文章,就请给bug菌点个关注吧!(๑′ᴗ‵๑)づ╭❤~;
💗如果对文章有任何疑问,还请文末留言或者加群吧;
💞鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复参与讨论(请勿发表攻击言论,谢谢);
💕版权声明:原创不易,转载请附上原文出处链接和本文声明,版权所有,盗版必究!!!谢谢。
以上是关于springboot系列(十五):如何实现静态邮件模板发送?你一定得会|超级详细,建议收藏的主要内容,如果未能解决你的问题,请参考以下文章
springboot系列(二十五):如何实现单word模板分多页导出?这你得会|超级详细,建议收藏
springboot系列(二十五):如何实现单word模板分多页导出?这你得会|超级详细,建议收藏
springboot系列(二十五):如何实现单word模板分多页导出?这你得会|超级详细,建议收藏
springboot系列(十六):如何实现发送邮件提醒,附完整源码(完结篇)