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

Spring Boot邮件发送所有配置均正确 仍无法正常发送问题求助

Spring Boot Gmail 邮件发送失败排查方案

核心问题排查点

  • Gmail 账号权限校验
    你配置的密码为Google应用专用密码,必须满足两个前提才能生效:
    1. 对应Google账号已开启两步验证
    2. 该应用专用密码是针对当前项目生成,未出现输入错误、过期的情况
      目前Google已禁止使用账号普通密码直接登录SMTP服务,未满足上述条件会直接触发认证失败。
  • 网络连通性校验
    国内网络环境无法直接访问smtp.gmail.com,如果项目在国内运行,要么配置合规的网络代理,要么替换为国内邮箱服务(如QQ邮箱、163邮箱),或部署到海外网络环境测试。
  • 配置参数补充
    现有配置缺少两个必要的TLS校验参数,容易触发证书校验失败,可补充如下配置:
    @Bean
    public JavaMailSender getJavaMailSender() {
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost("smtp.gmail.com");
        mailSender.setPort(587);
        mailSender.setUsername("xxxxxx");
        mailSender.setPassword("fubwbpumstgwnxef");
        Properties props = mailSender.getJavaMailProperties();
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        // 补充以下两个配置解决TLS校验问题
        props.put("mail.smtp.starttls.required", "true");
        props.put("mail.smtp.ssl.trust", "smtp.gmail.com");
        props.put("mail.debug", "true");
        return mailSender;
    }
    
  • Bean 优先级校验
    确认项目中使用的JavaMailSender实例是你自定义的Bean,Spring Boot的自动装配可能会生成默认实例覆盖你的配置,可在当前Bean上添加@Primary注解强制优先使用该实例,或注入时通过@Qualifier("getJavaMailSender")指定Bean名称。
  • 日志定位
    你已经开启了mail.debug=true,触发邮件发送逻辑时查看控制台的Debug日志,可直接定位具体错误类型:
    • 连接超时/连接拒绝:基本为网络连通性问题
    • 535 认证失败:为账号权限、密码错误问题
    • 证书校验失败:补充上述ssl.trust配置即可解决

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:15:04