MimeMessageHelper Spring 开机发送邮件

MimeMessageHelper Spring boot to send email

我正在使用 spring 引导发送电子邮件。来自我的电子邮件服务的代码片段

private @Autowired JavaMailSender mailSender;

MimeMessage message = mailSender.createMimeMessage();

MimeMessageHelper helper = new MimeMessageHelper(message,
    MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED, StandardCharsets.UTF_8.name());
 helper.setTo(bo.getToEmails().parallelStream().toArray(String[]::new));
helper.setBcc(bo.getBccEmails().parallelStream().toArray(String[]::new));
helper.setCc(bo.getCcEmails().parallelStream().toArray(String[]::new));
helper.setText(htmlBody, true);
helper.setText(textBody, false);
helper.setSubject(bo.getSubject());
helper.setFrom(new InternetAddress(bo.getFromEmail(),bo.getSenderLabel()));

首先我设置了 htmlBody,然后是 textBody

    helper.setText(htmlBody, true);
helper.setText(textBody, false);

它将 htmlBody 覆盖为 textBody 。如何使用 org.springframework.mail.javamail.MimeMessageHelper; 任何更新发送文本和 html 正文?

您可以使用 thymeleaf 作为您的 HTML 模板引擎。

示例 HTML 代码:

MySampleHTML.html

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <meta http-equiv="X-UA-Compatible" content="ie=edge"/>
    <title>Sample Email</title>
</head>
<body>
    <div th:text="${sampleText}"></div>
</body>
<html>

样本Java代码:

public class EmailSample {
    @Autowired
    private JavaMailSender mailSender;

    @Autowired
    private TemplateEngine templateEngine; // From Thymeleaf

    public void initiateEmailSend() {
        String processedHTMLTemplate = this.constructHTMLTemplate();

        // Start preparing the email
        MimeMessagePreparator preparator = message -> {
             MimeMessageHelper helper = new MimeMessageHelper(message, MimeMessageHelper.MULTIPART_MODE_MIXED, "UTF-8");
             helper.setFrom("Sample <sample@example.com>");
             helper.setTo("recipient@example.com");
             helper.setSubject("Sample Subject");
             helper.setText(processedHTMLTemplate, true);
        };

        mailSender.send(preparator); //send the email
    }

    // Fills up the HTML file
    private String constructHTMLTemplate() {
        Context context = new Context();
        context.setVariable("sampleText", "My text sample here");
        return templateEngine.process("MySampleHTML", context);
    }
}

并在您的 pom.xml

中包含 thymeleaf
    <!-- For email HTML templating -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

注意:将 MySampleHTML.html 文件放在 resources/templates/ 文件夹中供 thymeleaf 查看。

而不是

helper.setText(htmlBody, true);
helper.setText(textBody, false);

使用

helper.setText(htmlBody, textBody);