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

无需启用低安全应用访问解决javax.mail.AuthenticationFailedException报错

问题修复可行方案

javax.mail.AuthenticationFailedException报错的核心原因是2022年5月30日起谷歌正式停用低安全性应用访问权限,不再支持直接使用Google账号登录密码通过第三方SMTP客户端发信,以下是三种可直接落地的Java发信实现方案:

方案1:使用Gmail应用专用密码(改造成本最低)

该方案不需要修改原有JavaMail代码逻辑,仅需替换认证密码即可,前提是你的Google账号已开启两步验证:

  • 登录Google账号进入安全设置页,找到「应用专用密码」配置入口
  • 应用类型选择「邮件」,设备选择当前程序运行的对应环境,生成16位长度的应用专用密码
  • 代码中原先填写Google账号登录密码的位置,替换为这串16位应用专用密码即可

核心配置参考:

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import java.util.Properties;

public class GmailSendDemo {
    public static void main(String[] args) {
        Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        // 若使用JDK17+建议升级到jakarta.mail依赖,避免TLS版本兼容问题

        Session session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                // 用户名必须填完整Gmail地址,密码填16位应用专用密码,*不要填账号登录密码*
                return new PasswordAuthentication("your_address@gmail.com", "xxxxyyyyzzzzwwww");
            }
        });

        // 后续邮件构造、发送逻辑和原有代码完全一致
    }
}

如果替换后仍报认证错误,优先排查:

  • 确认应用专用密码复制时没有多余空格、换行
  • 确认本地/服务器网络可以正常连通smtp.gmail.com的587端口,无防火墙、网络策略拦截
  • 确认账号两步验证状态正常,没有主动撤销已生成的应用专用密码

方案2:对接Gmail API走OAuth2.0授权(安全性最高)

如果账号无法开启两步验证,或者有更高的安全合规要求,可以放弃SMTP协议,直接对接Gmail官方API通过OAuth2.0授权发信:

  • 在Google云平台创建项目,启用Gmail API服务
  • 配置OAuth2.0同意屏,创建桌面端/服务端类型的OAuth2.0凭证,获取客户端ID、密钥
  • 完成账号授权,获取对应发信权限的访问令牌
  • Java端引入Gmail API官方Java依赖,通过访问令牌构建认证客户端,调用发信接口即可
    该方案全程不需要传递账号密码,不会触发密码类认证失败问题,缺点是前期配置流程相对繁琐。

方案3:换用其他支持标准SMTP的邮件服务(配置成本最低)

如果不想处理Gmail的复杂权限配置,可以直接替换为支持标准SMTP认证的其他邮箱服务(包括个人邮箱、企业邮箱、专业邮件推送服务):

  • 进入对应邮箱的设置页,开启SMTP服务,获取服务给出的SMTP服务器地址、端口、专用授权码
  • 替换原有JavaMail代码中的SMTP连接参数,认证时用户名填对应邮箱地址,密码填服务生成的专用授权码即可
    原有发信逻辑基本不需要改动,大部分邮件服务的SMTP鉴权逻辑兼容性更好,不容易出现认证失败问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 10:30:53