【问题标题】:MimeMessageHelper Spring boot to send emailMimeMessageHelper Spring boot 发送邮件
【发布时间】:2018-03-16 04:53:01
【问题描述】:

我正在使用 spring boot 发送电子邮件。我的电子邮件服务中的代码 sn-p

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 正文?

【问题讨论】:

    标签: spring-boot jakarta-mail


    【解决方案1】:

    您可以使用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 看到它。

    【讨论】:

      【解决方案2】:

      而不是

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

      使用

      helper.setText(htmlBody, textBody);
      

      【讨论】:

        猜你喜欢
        • 2011-09-19
        • 2020-11-26
        • 2021-01-11
        • 2021-10-23
        • 1970-01-01
        • 1970-01-01
        • 2021-02-08
        • 1970-01-01
        • 2017-10-15
        相关资源
        最近更新 更多