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

JavaMail POP3连接Office365遇AuthenticationFailedException求助

使用基础认证读取Office 365邮箱邮件时的认证失败问题

尝试通过邮箱+密码的基础认证方式读取Microsoft Office 365邮箱邮件,已确认凭据正确,但调用store.connect时抛出javax.mail.AuthenticationFailedException,提示“登录失败:未知用户名或错误密码”。

异常信息

javax.mail.AuthenticationFailedException: Logon failure: unknown user name or bad password.

配置代码

Properties properties = new Properties();
properties.put("mail.pop3.host", "outlook.office365.com");
properties.put("mail.pop3.port", 995);
if ("pop3s".equals(prop.getMailStoreType())) {
    properties.put("mail.pop3.starttls.enable", "true");
}
else {
    properties.put("mail.pop3.starttls.enable", "false");               
}
Session emailSession = Session.getDefaultInstance(properties);
emailSession.setDebug(true);
Store store = emailSession.getStore("pop3s");
store.connect("outlook.office365.com", prop.getUsername(), prop.getPassword());

JavaMail调试日志

DEBUG: setDebug: JavaMail version 1.5.6
DEBUG: getProvider() returning javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle]
DEBUG POP3: mail.pop3s.rsetbeforequit: false
DEBUG POP3: mail.pop3s.disabletop: false
DEBUG POP3: mail.pop3s.forgettopheaders: false
DEBUG POP3: mail.pop3s.cachewriteto: false
DEBUG POP3: mail.pop3s.filecache.enable: false
DEBUG POP3: mail.pop3s.keepmessagecontent: false
DEBUG POP3: mail.pop3s.starttls.enable: true
DEBUG POP3: mail.pop3s.starttls.required: false
DEBUG POP3: mail.pop3s.finalizecleanclose: false
DEBUG POP3: mail.pop3s.apop.enable: false
DEBUG POP3: mail.pop3s.disablecapa: false
DEBUG POP3: connecting to host "outlook.office365.com", port 995, isSSL true
+OK The Microsoft Exchange POP3 service is ready. [WgBSADAAUAAyADcAOABDAEEAMAAwADQAOQAuAEMASABFAFAAMgA3ADgALgBQAFIATwBEAC4ATwBVAFQATABPAE8ASwAuAEMATwBNAA==]
CAPA
+OK
TOP
UIDL
SASL PLAIN XOAUTH2
USER
.
DEBUG POP3: authentication command trace suppressed
DEBUG POP3: authentication command failed
QUIT
+OK Microsoft Exchange Server POP3 server signing off.

解决方法

1. 确认POP3协议已启用

登录Outlook网页版,进入设置→邮件→同步电子邮件,检查POP3协议是否开启,若未启用则手动开启。

2. 应用密码替代原密码(多因素认证账户)

如果邮箱开启了多因素认证(MFA),普通密码无法用于第三方客户端认证:

  • 登录Microsoft账户管理页,进入安全→高级安全选项→应用密码
  • 生成专属应用密码,替换代码中的原密码

3. 修正JavaMail配置参数

Office 365的POP3s服务需使用SSL直连,调整配置如下:

Properties properties = new Properties();
properties.put("mail.pop3s.host", "outlook.office365.com");
properties.put("mail.pop3s.port", "995");
properties.put("mail.pop3s.auth", "true");
properties.put("mail.pop3s.ssl.enable", "true");

Session emailSession = Session.getDefaultInstance(properties);
emailSession.setDebug(true);
Store store = emailSession.getStore("pop3s");
store.connect("outlook.office365.com", prop.getUsername(), prop.getPassword());

注:POP3s本身基于SSL连接,无需启用STARTTLS,原代码中混用POP3/POP3s配置可能导致认证流程异常。

4. 验证用户名格式

确保使用完整邮箱地址作为用户名(如user@yourdomain.com),避免使用短用户名或别名。

5. 检查账户权限

确认邮箱账户未被锁定、未过期,且管理员已为账户分配POP3访问权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:42:02