Spring Boot 发送 QQ 邮箱邮件:从 530/535 错误到成功发送的全踩坑指南
·
1. 开篇:(为什么要学这个?)
- 实际开发场景:用户注册验证码、系统告警通知、订单提醒等功能都需要邮件发送;
- 痛点:新手配置 QQ 邮箱时频繁遇到 530(SSL 未开启)、535(授权码 / 服务异常)认证失败,网上零散教程不完整;
- 本文价值:从环境准备→配置→编码→排错,一站式解决 Spring Boot 发送 QQ 邮箱邮件的所有问题。
2. 核心技术点解析
(1)核心技术栈
Spring Mail:Spring 对 JavaMail 的封装,核心类JavaMailSender/SimpleMailMessage/MimeMessageHelper;SMTP协议:简单邮件传输协议,QQ 邮箱 SMTP 服务器地址smtp.qq.com,SSL 端口 465(非 SSL 端口 25 已被多数邮箱禁用);- QQ 邮箱特殊要求:必须开启 SMTP 服务 + 使用授权码(而非登录密码)+ 强制 SSL 加密。
-
概念 作用 SMTP 授权码 QQ 邮箱为第三方应用提供的专用登录凭证,避免泄露主密码,16 位字符串 SSL 加密 保障邮件传输过程不被窃听,QQ 邮箱强制要求开启,对应端口 465 JavaMailSender Spring 封装的邮件发送核心类,自动加载配置文件中的邮箱参数 MimeMessageHelper 简化复杂邮件(带附件 / HTML 内容)的构建,比 SimpleMailMessage 更实用
3. 实战步骤
步骤 1:准备工作(QQ 邮箱开启 SMTP + 生成授权码)
- 截图演示:登录 QQ 邮箱→设置→账户→开启 SMTP 服务→生成授权码的完整流程;
- 注意点:生成授权码需要验证密保手机,授权码生成后立即复制(关闭弹窗后无法再次查看)。

步骤 2:Spring Boot 项目引入依赖

步骤 3:配置文件

步骤 4:封装邮件工具类
public class MailUtil {
private static final Logger logger = LoggerFactory.getLogger(MailUtil.class);
@Value(value = "${spring.mail.username}")
private String from;
@Autowired
private JavaMailSender mailSender;
/**
* 发邮件
*
* @param to: 目标邮箱地址
* @param subject: 标题
* @param context: 正文
* @return
*/
public Boolean sendSampleMail(String to, String subject, String context) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(context);
try {
mailSender.send(message);
} catch (Exception e) {
logger.error("向{}发送邮件失败!", to, e);
return false;
}
return true;
}
}
步骤 5:测试邮件发送


4. 常见问题与排错
问题 1:530 Login fail. A secure connection is required(SSL 未开启)
- 原因:QQ 邮箱强制要求 SSL 加密,使用了 25 端口或未开启 ssl.enable=true;
- 解决方案:端口改为 465,添加
ssl.enable: true配置,指定protocol: smtps。
问题 2:535 Login fail. Account is abnormal/password is incorrect(授权码错误)
- 原因:填了 QQ 登录密码、授权码失效、SMTP 服务未开启、账号风控;
- 解决方案:① 重新生成 16 位授权码并替换配置;② 确认 QQ 邮箱 SMTP 服务已开启;③ 检查账号是否有安全异常,换网络重试。
问题 3:邮件发送成功但收件箱收不到
- 原因:邮件被归类到垃圾邮箱、发件人 / 收件人配置错误;
- 解决方案:检查垃圾邮箱,确保
setFrom和配置文件的 username 一致。
更多推荐

所有评论(0)