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 秒
        │
        ▼
发送邮件
        │
        ▼
用户输入验证码
        │
        ▼
注册接口校验
        │
        ▼
注册成功
posted @ 2026-07-13 07:53  畅畅c  阅读(19)  评论(0)    收藏  举报