微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试通过IMAP读取电子邮件时,“ A1 NO AUTHENTICATE failed”错误消息是什么意思?

如何解决尝试通过IMAP读取电子邮件时,“ A1 NO AUTHENTICATE failed”错误消息是什么意思?

我有以下代码应该通过IMAP打开与Microsoft Exchange服务器的连接:

+--------------------+-------------+---------------+----+--------------------+--------------------+
|        Metadata_key|     datehour|       sequence|desc|        raw_sequence|             quality|
+--------------------+-------------+---------------+----+--------------------+--------------------+
|2aa897b7-38cd-4af...|2020-10-08-12|@short_read_5/1|   +|GTTACTTCGATATCCGC...|BCCC<EGAGGGGGGGGG...|
+--------------------+-------------+---------------+----+--------------------+--------------------+
|2aa897b7-38cd-4af...|2020-10-08-12|@short_read_5/2|   +|dTTACTTCGATATCCGC...|dCCC<EGAGGGGGGGGG...|
+--------------------+-------------+---------------+----+--------------------+--------------------+

Folder inputFolder = null; Folder doneFolder = null; Store store = null; Properties properties = new Properties(); Session emailSession = null; properties.put("mail.imaps.host",imapHost); properties.put("mail.imaps.user",mailUsername); properties.put("mail.imaps.port",Integer.toString(imapPort)); properties.put("mail.imaps.starttls.enable","true"); MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustedHosts(new String[]{"XXXXXXXXX"}); properties.put("mail.imaps.socketFactory",sf); properties.put("mail.debug","true"); logger.info(String.format("Using user name '%s'",mailUsername)); try { emailSession = createEmailSession(properties); store = getStore(emailSession); store.connect(mailUsername,mailPassword); 是主机名。

XXXXXXXXXcreateEmailSession方法如下:

getStore

Store getStore(final Session emailSession) throws NoSuchProviderException { return emailSession.getStore("imaps"); } Session createEmailSession(final Properties properties) { return Session.getInstance(properties); } 导致以下错误消息:

store.connect(mailUsername,mailPassword)

调试输出如下:

Caused by: javax.mail.AuthenticationFailedException: AUTHENTICATE Failed.
                at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:732)
                at javax.mail.Service.connect(Service.java:366)
                at javax.mail.Service.connect(Service.java:246)
                at javax.mail.Service.connect(Service.java:267)

用于工作的凭据(DEBUG: JavaMail version 1.6.2 DEBUG: successfully loaded resource: /meta-inf/javamail.default.address.map DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle] DEBUG IMAPS: mail.imap.fetchsize: 16384 DEBUG IMAPS: mail.imap.ignorebodystructuresize: false DEBUG IMAPS: mail.imap.statuscachetimeout: 1000 DEBUG IMAPS: mail.imap.appendbuffersize: -1 DEBUG IMAPS: mail.imap.minidletime: 10 DEBUG IMAPS: enable STARTTLS DEBUG IMAPS: closeFoldersOnStoreFailure DEBUG IMAPS: trying to connect to host "XXXXXXXXX",port 993,isSSL true * OK The Microsoft Exchange IMAP4 service is ready. A0 CAPABILITY * CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN SASL-IR UIdplUS MOVE ID UNSELECT CHILDREN IDLE NAMESPACE LIteraL+ A0 OK CAPABILITY completed. DEBUG IMAPS: AUTH: PLAIN DEBUG IMAPS: protocolConnect login,host=XXXXXXXXX,user=YYYYYYYYY,password=<non-null> DEBUG IMAPS: AUTHENTICATE PLAIN command trace suppressed DEBUG IMAPS: AUTHENTICATE PLAIN command result: A1 NO AUTHENTICATE Failed. DEBUG IMAPS: IMAPStore cleanup,not connected 和相应的密码)。然后我开始收到这样的消息。我与管理员交谈,他们告诉我,由于使用错误密码登录的尝试过多,用户已被锁定。他们还说他们已经解锁了用户,并且应该可以正常工作。

但事实并非如此。

根据上面的调试输出,如何缩小问题范围?

更新1:根据this页,当我使用YYYYYYYYY时,Exchange服务器仅支持Kerberos和NTLM身份验证。也许这就是它失败的原因。

更新2: This answer建议使用ews-java-api访问Exchange Server。会尝试的。

更新3:禁止使用

进行纯文本身份验证
PLAIN

没有帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。