发送电子邮件

Spring Framework 使用 JavaMailSender 接口为发送电子邮件提供了抽象,Spring Boot 也为其提供了自动配置和 starter 模块。

有关如何使用 JavaMailSender 的详细说明,请参阅参考文档

如果 spring.mail.host 和相关库(由 spring-boot-starter-mail 定义)可用,则在不存在默认 JavaMailSender 时会创建一个默认的。发送方可以通过 spring.mail 命名空间下的配置项进一步定制。有关更多详情,请参阅 MailProperties

特别是,某些默认的超时值是无限的,您可能需要更改它们以避免线程被无响应的邮件服务器阻塞,如下例所示

  • Properties

  • YAML

spring.mail.properties[mail.smtp.connectiontimeout]=5000
spring.mail.properties[mail.smtp.timeout]=3000
spring.mail.properties[mail.smtp.writetimeout]=5000
spring:
  mail:
    properties:
      "[mail.smtp.connectiontimeout]": 5000
      "[mail.smtp.timeout]": 3000
      "[mail.smtp.writetimeout]": 5000

也可以使用来自 JNDI 的现有 Session 配置 JavaMailSender

  • Properties

  • YAML

spring.mail.jndi-name=mail/Session
spring:
  mail:
    jndi-name: "mail/Session"

当设置了 jndi-name 时,它优先于所有其他与 Session 相关的设置。