尝试通过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 (将#修改为@)