📅  最后修改于: 2023-12-03 14:58:09.660000             🧑  作者: Mango
当你需要在Java代码中发送邮件时,thymeleaf和spring boot可以提供便利的方式。Thymeleaf是一个基于Java的模板引擎,可以方便地与Spring Boot集成。Spring Boot是一个开源框架,它简化了Spring应用程序的构建和部署。
首先,需要在pom.xml文件中添加如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
这两个依赖可以让你很方便地使用thymeleaf来生成HTML格式的邮件。
在src/main/resources/templates目录下创建一个thymeleaf模板文件,例如mail.html,内容如下:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="en">
<head>
<meta charset="UTF-8">
<title>邮件模板</title>
</head>
<body>
<h1 th:text="${subject}">邮件标题</h1>
<p th:text="${text}">邮件内容</p>
</body>
</html>
这个模板文件会被thymeleaf解析,并替换其中的变量。
下面是一个简单的Java类,它使用thymeleaf生成HTML格式的邮件,并发送到指定地址。
@Service
public class MailService {
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private TemplateEngine templateEngine;
public void sendMail(String subject, String text, String recipient) {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, "utf-8");
try {
Context context = new Context();
context.setVariable("subject", subject);
context.setVariable("text", text);
String htmlContent = templateEngine.process("mail.html", context);
helper.setTo(recipient);
helper.setText(htmlContent, true);
helper.setSubject(subject);
javaMailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
这个类使用“@Autowired”注解,自动注入了JavaMailSender和TemplateEngine。JavaMailSender对象通过Spring Boot的自动配置获得,你只需要在application.properties配置文件中指定邮件服务器的地址、端口号、用户名和密码即可。TemplateEngine对象的注入同理。
发送邮件的实现主要是在“sendMail”方法中。它首先创建了一个MimeMessage对象和一个MimeMessageHelper对象,用于表示邮件内容。然后创建了一个Context对象,设置了变量值,最后使用TemplateEngine来解析模板文件,并生成HTML格式的邮件内容。MimeMessageHelper对象的“setText”方法设置邮件内容,第二个参数为“true”表示邮件内容为HTML格式。最后调用JavaMailSender的“send”方法发送邮件。
使用thymeleaf和spring boot发送邮件非常方便。只需要添加几个依赖,创建一个模板文件,然后在Java代码中调用相关方法即可。在发送邮件时,thymeleaf可以方便地帮你生成HTML格式的邮件。如果你的项目中已经使用了spring boot和thymeleaf,那么这种方式是最便捷的。