效果展示

一、准备工作
- 需要开启POP3、SMTP邮件服务
- 需要设置客户端授权码
- 以网易邮箱举例如下:


二、发送模板邮件
1、添加依赖
<!--mail-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--thymeleaf-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2、绑定配置
#邮件配置
#邮箱服务器地址
spring.mail.host=smtp.163.com
#用户名
spring.mail.username=XXX@163.com
#密码
spring.mail.password=XXX
#编码
spring.mail.default-encoding=UTF-8
#发件人
mail.fromMail.sender=XXX@163.com
3、编写HTML模板
- src\main\resources\templates下,新建文件registerTemplate.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>激活邮件</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: Arial, Helvetica, sans-serif;
}
body {
background-color: #ECECEC;
}
.container {
width: 800px;
margin: 50px auto;
}
.header {
height: 80px;
background-color: #49bcff;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
padding-left: 30px;
}
.header h2 {
padding-top: 25px;
color: white;
}
.content {
background-color: #fff;
padding-left: 30px;
padding-bottom: 30px;
border-bottom: 1px solid #ccc;
}
.content h2 {
padding-top: 20px;
padding-bottom: 20px;
}
.content p {
padding-top: 10px;
}
.footer {
background-color: #fff;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
padding: 35px;
}
.footer p {
color: #747474;
padding-top: 10px;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h2>欢迎加入SecondGoodTrade! (二手商品交易平台)</h2>
</div>
<div class="content">
<h2>亲爱的用户您好</h2>
<p>您的邮箱:<b><span th:text="${email}"></span></b></p>
<p>您的激活码:<b><span th:text="${code}"></span></b></p>
<p>您注册时的日期:<b><span th:text="${createTime}"></span></b></p>
<p>当您在使用本网站时,务必要遵守法律法规</p>
<p>如果您有什么疑问可以联系管理员,Email: <b>wgt161110527@163.com</b></p>
</div>
<div class="footer">
<p>此为系统邮件,请勿回复</p>
<p>请保管好您的信息,避免被他人盗用</p>
<p>©shw</p>
</div>
</div>
</body>
</html>
4、书写工具类
@Component
public class MailUtil {
@Value("${mail.fromMail.sender}")
private String sender;
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private TemplateEngine templateEngine;
public void sendTemplateMail(String receiver, String subject, String emailTemplate, Map<String, Object> dataMap) throws Exception {
Context context = new Context();
for (Map.Entry<String, Object> entry : dataMap.entrySet()) {
context.setVariable(entry.getKey(), entry.getValue());
}
String templateContent = templateEngine.process(emailTemplate, context);
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(sender);
helper.setTo(receiver);
helper.setSubject(subject);
helper.setText(templateContent, true);
javaMailSender.send(message);
}
}
5、调用方法
@Autowired
private MailUtil mailUtil;
private final String receiver = "wgt161110527@163.com";
@Test
public void testTemplateMail() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String subject = "SecondGoodTrade用户注册";
String emailTemplate = "registerTemplate";
String code = UUIDUtil.getUUID(5);
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("email", email);
dataMap.put("code", code);
dataMap.put("createTime", sdf.format(new Date()));
try {
mailUtil.sendTemplateMail(receiver, subject, emailTemplate, dataMap);
} catch (Exception e) {
return;
}
}