如何解决尝试通过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);
是主机名。
XXXXXXXXX
和createEmailSession
方法如下:
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 举报,一经查实,本站将立刻删除。