SpringBoot+Thymeleaf发送HTML格式邮件
接着上一篇http://www.zeromemos.com/index/article/read.html?id=335
加入Thymeleaf依赖
<!--thymeleaf 模板的静态页面-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
添加MailService接口方法sendHtmlMail
void sendHtmlMail(String to, String subject, String content);
MailServiceImpl里实现方法
@Value("${spring.mail.username}") //直接从配置文件获取username的值 private String from;
@Override public void sendHtmlMail(String to, String subject, String content) { try { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setTo(to);//收件者 helper.setFrom(from);//发送者 helper.setSubject(subject);//主题 helper.setText(content, true);//第二个参数true表示邮件正文是HTML格式的,该参数不传默认为false。 javaMailSender.send(message); } catch (MessagingException e) { System.out.println("发送失败"); } }
在resources创建一个templates文件夹放置mailtemplate.html文件,默认配置就是放这里
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>mailtemplate</title>
</head>
<body>
<div th:text="${title}"></div>
</body>
</html>
如果要修改html文件的位置可以到配置文件里修改,默认就是在resources下的templates文件夹
spring.thymeleaf.prefix=classpath:/templates/
控制器里加入访问方法
import org.thymeleaf.context.Context; @RestController public class IndexController { @Autowired private MailService mailService; @Autowired private TemplateEngine templateEngine; @GetMapping("/sendHtml/{to}") public R sendHtml(@PathVariable String to){
//Thymeleaf提供了TemplateEngine来对模板进行渲染,通过Context构造模板中变量需要的值 Context context = new Context(); context.setVariable("title", "自定义的HTML内容标题");//设置templates模板里的title变量值
String mail = templateEngine.process("mailtemplate.html", context); mailService.sendHtmlMail(to, "邮件标题", mail); return R.ok(); } }
测试邮件接收成功