thymeleaf模板引擎发送邮件
时间: 2023-09-22 12:12:43 浏览: 131
你可以使用Thymeleaf模板引擎来发送邮件。以下是一个示例代码,演示了如何使用Thymeleaf生成HTML内容,并将其作为电子邮件正文发送。
首先,确保在您的项目中添加了Thymeleaf和JavaMail依赖项。在pom.xml文件中添加以下依赖项:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
```
接下来,创建一个简单的Thymeleaf模板,例如email-template.html,将其放置在classpath:/templates目录下:
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Email Template</title>
</head>
<body>
<h1>Hello, [[${name}]]!</h1>
<p>Thank you for subscribing to our newsletter.</p>
</body>
</html>
```
然后,创建一个类来处理邮件发送逻辑:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@Component
public class EmailService {
@Autowired
private JavaMailSender emailSender;
@Autowired
private TemplateEngine templateEngine;
public void sendEmail(String recipientEmail, String recipientName) throws MessagingException, IOException {
MimeMessage message = emailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED, StandardCharsets.UTF_8.name());
// 设置邮件主题
helper.setSubject("Welcome to our newsletter");
// 设置邮件发送者
helper.setFrom("your-email@example.com");
// 设置邮件接收者
helper.setTo(recipientEmail);
// 创建Thymeleaf上下文
Context context = new Context();
context.setVariable("name", recipientName);
// 使用Thymeleaf模板生成HTML内容
String htmlContent = templateEngine.process("email-template", context);
// 设置邮件内容
helper.setText(htmlContent, true);
// 发送邮件
emailSender.send(message);
}
}
```
在这个示例中,EmailService类使用JavaMailSender和TemplateEngine来发送邮件。首先,它创建一个MimeMessage对象,并使用MimeMessageHelper来设置邮件的基本属性,如主题、发件人和收件人。
然后,它创建一个Thymeleaf的上下文对象,并将收件人的姓名作为变量传递给模板。接下来,它使用TemplateEngine的process方法将模板与上下文结合,生成HTML内容。
最后,它调用MimeMessageHelper的setText方法,将HTML内容设置为邮件的正文,并使用JavaMailSender发送邮件。
请注意,您需要使用您自己的发件人邮箱地址替换"your-email@example.com"。
这只是一个基本示例,您可以根据项目的需要进行自定义和扩展。希望这能帮助到您!如果您有更多的问题,请随时提问。
阅读全文