电子邮件模块
2024年12月18日大约 2 分钟消息系统电子邮件Spring EmailSpring Application Event
模块
message-mail-spring-boot-starter
用途
工程中依赖了 message-mail-spring-boot-starter
模块,同时设定一定的配置参数,就可以开启电子邮件消息支持。发送纯文本或者基于 Thymeleaf 模版的 Html 电子邮件。
Dante Cloud 中提供的 用户电子邮件地址验证
、登录常用位置IP异常通知
和 电子邮件验证码
等功能均需要依赖此模块
准备
想要实现发送电子邮件,首先要有一个支持 POP3 协议的电子邮件服务。这个根据自己实际情况选择,可以选择企业自建电子邮件服务,或者使用厂商提供的服务,比如:QQ 邮箱、163邮箱、阿里云等等。
根据自己使用的邮箱,生成发送邮件所需的 POP3 地址,访问用户名和密码等信息。
用法
[1]添加依赖
在工程中添加依赖:
<dependency>
<groupId>cn.herodotus.stirrup</groupId>
<artifactId>message-mail-spring-boot-starter</artifactId>
</dependency>
[2]Spring Mail 配置
Dante Cloud Email 发送基于 Spring Mail 实现。想要开启相关功能,除了添加 message-mail-spring-boot-starter
依赖以外,还要在系统中添加 Spring Mail 相关配置。下面以 QQ 邮箱作为示例:
spring:
mail:
# 指定邮件服务器地址
host: smtp.qq.com
# 登录账户
username: XXXXX@qq.com
# 登录密码
password: XXXXX
# 端口
port: 465
# 使用的协议
protocol: smtps
# 其他的属性
properties:
"mail.smtp.connectiontimeout": 5000
"mail.smtp.timeout": 3000
"mail.smtp.writetimeout": 5000
"mail.smtp.auth": true
"mail.smtp.starttls.enable": true
"mail.smtp.starttls.required": true
herodotus:
message:
mail:
service-account: xxx@xxx.com
[3]自定义配置
除了 Spring Mail 的配置以外,根据功能的不同,Dante Cloud 提供了自定义的邮件配置。不同的配置会影响不同功能的使用,具体配置参见:电子邮件消息配置
[4]发送消息
以上内容配置完成之后,系统会自动注入相关配置。Dante Cloud 对电子邮件消息的发送也做了简化,采用 Spring Boot 框架的事件(Event
)机制,发送 MailMessageEvent
事件就可以实现电子邮件消息的发送。
以下几种方式实现消息发送:
// 方式一
applicationContext.publishEvent(new MailMessageEvent(MailMessage mailMessage))
// 方式二
applicationEventPublisher.publishEvent(new MailMessageEvent(MailMessage mailMessage))
// 方式三
ServiceContextHolder.getInstance().publishEvent(new MailMessageEvent(MailMessage mailMessage))
注意
以上几种方式均不支持“跨服务”发送,如有需求,可查阅【统一消息发送】。