SpringBoot发送邮件
Spring Boot 邮件发送(spring-boot-starter-mail)
一、简介
spring-boot-starter-mail 是 Spring Boot 官方提供的邮件发送组件,底层基于 Jakarta Mail(JavaMail)。
主要用途:
- 邮箱验证码
- 注册激活邮件
- 找回密码
- 系统通知
- HTML 邮件
- 附件邮件
二、添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
三、QQ 邮箱开启 SMTP
QQ 邮箱:
设置 → 账户 → POP3/SMTP 服务
开启后会生成一个授权码。
注意:
SMTP 登录使用的是授权码,不是 QQ 登录密码。
四、配置 application.yml
spring:
mail:
host: smtp.qq.com
port: 465
protocol: smtp
username: #这里填写邮件发送方的邮箱
password: #这里填写邮件发送方的授权码
properties:
mail:
smtp:
auth: true
ssl:
enable: true
推荐配置:
- SMTP服务器:smtp.qq.com
- 端口:465
- SSL:开启
五、发送普通文本邮件
注入 JavaMailSender
@Service
public class MailService {
@Autowired
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String from;
}
发送邮件
public void sendMail(String to) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject("测试邮件");
message.setText("Hello Spring Boot!");
mailSender.send(message);
}
六、发送 HTML 邮件
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper =
new MimeMessageHelper(mimeMessage, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject("邮箱验证码");
helper.setText("""
<h2>DeviceUsageTime</h2>
<p>您的验证码:</p>
<h1 style="color:#4CAF50">
654321
</h1>
<p>验证码5分钟内有效。</p>
""", true);
mailSender.send(mimeMessage);
第二个参数:
true
表示发送 HTML。
七、生成六位验证码
String code = String.format(
"%06d",
new Random().nextInt(1000000)
);
示例:
038521
八、推荐业务流程
用户输入邮箱
│
▼
点击获取验证码
│
▼
生成6位验证码
│
▼
Redis 保存验证码
TTL:300 秒
│
▼
发送邮件
│
▼
用户输入验证码
│
▼
注册接口校验
│
▼
注册成功

浙公网安备 33010602011771号