SpringBoot框架实现邮件发送(下)
接上文:SpringBoot框架实现邮件发送(上)_czxboys的博客-CSDN博客
1 邮件发送HTML模板
在templates目录下创建一个email.htm
模板,可以参考如下,尽量别引用其它css,js样式。
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0" width="800" bgcolor="#0092ff" height="66">
<tbody>
<tr>
<td width="50"></td>
<td width="750"><img style="WIDTH: 135px"></td>
</tr>
</tbody>
</table>
<table style="FONT-FAMILY: 黑体; FONT-SIZE: 10pt" border="0" cellspacing="0" cellpadding="50" width="800">
<tbody>
<tr>
<td width="800">
<div>
<div style="FONT-SIZE: 11pt">
亲爱的用户,您好!
</div>
<br>
<div style="FONT-SIZE: 11pt">
您正在注册/登录xxx ID,本次注册/登录请求的验证码为:
</div>
<br>
<br>
<div>
<span style="COLOR: #0094ff; FONT-SIZE: 40pt" th:text="${code}"> code </span>
<span style="COLOR: #ff0000; FONT-SIZE: 11pt">(为了保障您帐号的安全性,请在5分钟内完成验证。)</span>
</div>
<br>
<br>
<hr style="BORDER-BOTTOM: #808080 0px dashed; BORDER-LEFT: #808080 0px dashed; HEIGHT: 1px; BORDER-TOP: #808080 1px dashed; BORDER-RIGHT: #808080 0px dashed">
<br>
<div style="COLOR: #808080">
此邮件由系统自动发出,系统不接受回信,因此请勿直接回复。
<br> 安全使用您的“xxx ID”注意事项:
<br> 1、请不要在其他网站上使用相同的邮箱和密码进行注册。
<br> 2、请不要告知任何人您的“xxx ID”密码信息,包括xxx的工作人员。
<br>
<br> 如果您错误的收到本电子邮件,请您忽略上述内容。
</div>
<br>
<hr style="BORDER-BOTTOM: #808080 0px dashed; BORDER-LEFT: #808080 0px dashed; HEIGHT: 1px; BORDER-TOP: #808080 1px dashed; BORDER-RIGHT: #808080 0px dashed">
<div>
<br>
</div>
<div style="TEXT-ALIGN: right; FONT-SIZE: 11pt">
xxx
</div>
<div style="TEXT-ALIGN: right; FONT-SIZE: 11pt">
<span th:text="${#dates.format(#dates.createNow(),'yyyy/MM/dd HH:mm')}"></span>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<br/>
</body>
</html>
2 MailUtils工具类
在工具类新增发送html页面的模板
/**
* 邮件发送HTML 模板
*
* @param mailBean 接受邮件的信息
*/
public void sendHtml(MailBean mailBean){
MimeMessage mimeMessage;
try {
mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
mimeMessageHelper.setFrom(MAIL_SENDER);
mimeMessageHelper.setTo(mailBean.getToEmail());
mimeMessageHelper.setSubject(mailBean.getSubject());
// 加true,只发送HTML页面body里面的内容,不加则发送整个页面代码
mimeMessageHelper.setText(mailBean.getCode(),true);
// 邮件发送
mailSender.send(mimeMessage);
} catch (MessagingException e) {
log.error("邮件发送失败:{}",e.getMessage());
throw new CustomException("邮件发送失败");
}
}
3 测试sendText()方法
新建测试,测试纯文本发送是否能发送邮件。
package com.example.utils;
import com.example.pojo.MailBean;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class MailUtilsTest {
@Autowired
MailUtils mailUtils;
@Test
void sendText() {
MailBean mailBean = new MailBean();
mailBean.setCode("测试邮件");
mailBean.setSubject("测试邮件");
// 将Email改成自己的
mailBean.setToEmail("xxx@qq.com");
mailUtils.sendText(mailBean);
System.out.println("====邮件发送成功====");
}
}
测试结果:邮件发送成功
4 测试sendHtml()方法
新增测试方法
@Autowired
TemplateEngine templateEngine;
@Test
void sendHtml() {
code = "Html 模板";
// Context是org.thymeleaf.context包下的
Context context = new Context();
// html填充动态属性值
context.setVariable("code",code);
MailBean mailBean = new MailBean();
String content = templateEngine.process("email",context);
MailBean mailBean = new MailBean(email, "瑞吉外卖注册邮件", content);
mailBean.setCode(code);
mailBean.setSubject("测试邮件");
// 将Email改成自己的
mailBean.setToEmail("xxx@qq.com");
mailUtils.sendHtml(mailBean);
System.out.println("====邮件发送成功====");
}
开始测试,发送邮件成功。
注意:
@Autowired 注解是用在测试类上的
@Resource 注解是用在非测试类上的
两者的功能基本相同