【问题标题】:In my Spring Boot web application, how can I send an email containing html without a templating engine>在我的 Spring Boot Web 应用程序中,如何在没有模板引擎的情况下发送包含 html 的电子邮件>
【发布时间】:2018-07-15 18:32:40
【问题描述】:

我目前有一个 Spring Boot Web 应用程序,我想发送一封包含 HTML 的电子邮件,以便电子邮件看起来更令人愉悦。目前我正在使用 SimpleMailMessage。

我不希望仅仅为了发送格式良好的电子邮件而实现模板引擎。

感谢所有帮助,谢谢。

【问题讨论】:

  • 您根本不需要模板引擎。不过会更容易(当然取决于您的用例)。但是,您可能想看看 JavaMail-MimeMessages 发送 html 邮件。

标签: java html spring email spring-boot


【解决方案1】:

如果您实际上使用的是 Spring Boot,那么您在发送消息方面已经有了一个非常好的开始。您的代码可以松散地基于以下简单的东西:

@Component
public class EmailServiceImpl implements EmailService {

    @Autowired
    public JavaMailSender emailSender;

    @Autowired
    public MimeMessage mimeMessage;

    public void sendMessage() {
       helper.setTo("someone@abc.com");
       helper.setSubject("This is the test message for testing gmail smtp server using spring mail");
       helper.setFrom("abc@gmail.com");
       mailSender.send(mimeMessage);
    }
}

一个看起来包含您的模板的@Configuration

@Bean
@Scope("prototype")
public MimeMessage templateSimpleMessage(JavaMailSender mailSender) {
    MimeMessage mimeMessage = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "utf-8");
    helper.setText("<h3>Hello World!</h3>");
    return message;
}

然后像这样在application.yml 中配置您的邮件 SMTP 目标:

# application.yml

spring:
  mail:
    default-encoding: UTF-8
    host: smtp.gmail.com
    username: [email protected]
    password: secret
    port: 587
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
    protocol: smtp
    test-connection: false

如果您想构建更高级的模板,请使用VelocitySee example.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-28
    • 2018-07-03
    • 1970-01-01
    • 2021-10-13
    • 2023-03-26
    • 2021-05-19
    • 1970-01-01
    • 2014-10-10
    相关资源
    最近更新 更多