更换Gmail密码后Java邮件读取代码报[AUTHENTICATIONFAILED] Invalid credentials (Failure)问题求助
更换Gmail密码后Java邮件读取代码报[AUTHENTICATIONFAILED] Invalid credentials (Failure)问题求助
兄弟,我之前改完Gmail密码也碰到过一模一样的报错,折腾了好一会儿才弄好,给你几个实用的排查和解决方向,你挨个试:
别再纠结“允许低安全性应用”了,这个功能Google早就砍了
Google在2022年左右就彻底移除了“允许低安全性应用访问”的选项,所以你现在开这个完全没用,白费劲。正确的做法是给你的Gmail账号开启两步验证(2FA),然后去Google账号的安全设置里生成一个应用专用密码(App Password),把代码里原来的Gmail密码换成这个App Password,这才是现在Gmail允许第三方程序登录的正确方式。升级你的JavaMail版本
你用的1.5版本太老了,对Google新的验证机制兼容性很差,建议直接升级到1.6.2或者更高的稳定版本,新版本会适配Gmail的认证要求,能避免很多莫名其妙的兼容性问题。检查代码里的配置细节
确认你的IMAP/SMTP配置参数有没有写错,Gmail的标准配置是:- IMAP服务器:
imap.gmail.com,端口993,必须启用SSL - 要开启认证开关,比如
mail.imap.auth设为true,mail.imap.ssl.enable设为true
给你贴个核心配置的示例代码,你对照着改:
import javax.mail.*; import java.util.Properties; public class GmailReader { public static void main(String[] args) { String username = "your-gmail-account@gmail.com"; String appPassword = "你生成的应用专用密码"; Properties props = new Properties(); props.put("mail.imap.host", "imap.gmail.com"); props.put("mail.imap.port", "993"); props.put("mail.imap.ssl.enable", "true"); props.put("mail.imap.auth", "true"); Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, appPassword); } }); // 后续的邮件读取逻辑... } }- IMAP服务器:
检查Google账号的安全提醒
如果上面的方法都试过还不行,去你的Gmail账号对应的Google安全中心,看看有没有“最近的不安全登录尝试”的提醒,Google可能会把你的Java程序的登录判定为可疑操作,需要你手动点击“允许”这个登录请求,之后程序就能正常访问了。
备注:内容来源于stack exchange,提问作者ericire
相关产品推荐
相关产品推荐

