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

Spring使用JavaMailSender发邮件报535认证失败异常解决方案

Spring Boot 邮件发送535认证失败问题排查与修复

核心错误原因

你遇到的javax.mail.AuthenticationFailedException: 535 5.7.8 Error: authentication failed本质是SMTP认证流程未正常触发,核心配置错误有两处:

  1. SMTP认证开关配置错误:你在Java配置类和application.properties里都把mail.smtp.auth设为了false,但Interia的SMTP服务(poczta.interia.pl:587)强制要求客户端做身份认证,关闭这个参数后JavaMail客户端根本不会向服务器发送账号密码信息,直接被服务器拒绝。异常里的UGFzc3dvcmQ6是Base64编码的Password:字符串,就是服务器返回的密码校验要求提示。
  2. 重复配置导致参数覆盖:你既手动写了EmailData配置类自定义JavaMailSender Bean,又在application.properties里写了Spring Mail的配置项,两套配置同时存在时很容易出现参数加载错乱,没必要重复定义。

修复步骤

按以下顺序调整配置即可解决问题:

  • 把SMTP认证开关改为true
    如果选择用配置文件方式(推荐),修改application.properties对应配置项:
    spring.mail.properties.mail.smtp.auth=true
    
    如果选择保留自定义Java配置类,修改对应参数行:
    properties.put("mail.smtp.auth", "true");
    
  • 删除重复配置,二选一即可
    推荐直接删掉你写的EmailData配置类,Spring Boot会自动读取spring.mail.*前缀的配置完成JavaMailSender的初始化,不需要手动写@Bean实例化,避免手动配置漏写参数。
  • 补全Interia要求的TLS配置
    Interia的587端口强制要求TLS加密传输,在配置文件里补充一行参数,避免加密协商失败:
    spring.mail.properties.mail.smtp.starttls.required=true
    
  • 校验邮箱侧SMTP权限
    如果改完上述配置还是报错,登录Interia邮箱网页端,进入设置页确认SMTP服务处于开启状态;如果你的邮箱开了二次验证,需要生成SMTP专用的应用密码替换你现在填的账号登录密码。

额外代码问题提醒

你写的EmailService里sendMail方法的收件人是硬编码的myemail1@gmail.com,没有使用入参里的toEmail,正式上线前记得把simpleMailMessage.setTo()的参数替换为传入的收件人变量,否则所有通知邮件都会发到你硬编码的邮箱里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:01:41