You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot应用通过YAML配置发送邮件失败问题求助

SpringBoot邮件YAML配置端口问题排查与解决

端口25认证失败的解决

端口25多数情况下需要先通过STARTTLS升级连接为加密状态,再进行认证,直接裸连认证会被服务器拒绝。以下是正确的YAML配置:

spring:
  mail:
    host: 你的SMTP服务器地址
    port: 25
    username: 你的邮箱账号
    password: 你的邮箱密码/授权码
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true

注意:部分企业内部邮件服务器可能限制25端口仅用于内部转发,不允许外部账号认证,这种情况建议直接改用587端口。

端口587提示STARTTLS required的解决

587是SMTP提交端口,强制要求STARTTLS加密,出现该错误说明你的YAML配置中未正确开启STARTTLS。正确配置如下:

spring:
  mail:
    host: 你的SMTP服务器地址
    port: 587
    username: 你的邮箱账号
    password: 你的邮箱密码/授权码
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true
          # 可选:添加超时配置避免连接超时
          connectiontimeout: 5000
          timeout: 5000
          writetimeout: 5000

通用排查点

  • 检查YAML缩进:YAML对缩进严格,properties下的mail.smtp层级必须正确对齐,否则配置不会生效。
  • 确认密码/授权码:如果是第三方邮箱(如QQ、网易),必须用SMTP授权码而非登录密码;企业邮箱需确认是否开启了SMTP服务权限。
  • 公司网络限制:联系运维确认公司主机是否放行25/587端口的出站访问,部分企业防火墙会拦截未授权的SMTP连接。
  • 对比VM Options配置:把之前VM Options里的邮件参数(如-Dspring.mail.smtp.starttls.enable=true)和YAML配置逐一比对,确保没有遗漏关键参数。

测试代码

可以用以下简单代码验证配置是否生效:

@Autowired
private JavaMailSender mailSender;

public void sendTestMail() {
    SimpleMailMessage msg = new SimpleMailMessage();
    msg.setFrom("你的邮箱@xxx.com");
    msg.setTo("测试接收邮箱@xxx.com");
    msg.setSubject("YAML配置测试邮件");
    msg.setText("配置生效,邮件发送成功");
    mailSender.send(msg);
}

内容的提问来源于stack exchange,提问作者abdulsatar sayed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 23:47:04