使用Gmail SMTP的Spring Mail Sender认证失败如何解决?
解决Spring Mail连接Gmail的AuthenticationFailedException问题
看到你遇到的javax.mail.AuthenticationFailedException,这是Gmail当前的安全机制导致的——它默认阻止第三方应用直接使用账号密码登录SMTP服务,下面是具体的解决步骤:
一、优先推荐:使用Google App Password(最安全)
Google要求开启两步验证的账号使用应用专用密码登录第三方邮件客户端,步骤如下:
- 先确认你的Google账号已开启两步验证(未开启的话,先去账号安全设置里完成开启)
- 登录Google账号后进入安全设置页面,找到「App Passwords」选项(仅开启两步验证后可见)
- 在「Select app」中选择「Mail」,「Select device」中选择「Other (custom name)」,随便填写一个标识名比如「Spring Mail App」
- 点击生成按钮,会得到一个16位无空格的密码,将这个密码替换你
application.properties里的spring.mail.password值
二、检查配置与代码细节
1. 确认application.properties配置正确
你的现有配置框架没问题,只需替换密码,同时可以调整格式让配置更清晰:
spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=你的Gmail账号@gmail.com spring.mail.password=刚才生成的16位App Password # 邮件相关属性 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true
2. 保证发件人地址与配置的username一致
你的sendMail方法中传入的from参数必须和spring.mail.username完全匹配,Gmail不允许随意自定义发件人,否则也可能触发认证失败。
三、备选方案(安全性低,不推荐)
如果你的账号未开启两步验证,可临时开启「不太安全的应用访问」(Google已逐步淘汰该选项):
- 登录Google账号安全设置,找到「不太安全的应用访问」并开启
- 之后使用你的普通账号密码作为
spring.mail.password即可,但此方法会降低账号安全性,不建议长期使用
四、额外检查点
- 先登录网页版Gmail确认账号未被锁定,或无需完成额外安全验证(若提示异常登录,先通过网页完成验证)
- 确保你的网络环境可正常访问Google服务,部分地区可能需要特殊网络设置
按上述步骤调整后,重新运行Spring Boot应用,应该就能解决认证失败的问题了。
内容的提问来源于stack exchange,提问作者Gu Gue
相关产品推荐
相关产品推荐

