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(); } }

测试邮件接收成功