已经完成应用程序注册,并配置api权限和客户端密码



javamail 然后获取oauth的token后,在登陆邮箱时提示错误:A1 NO AUTHENTICATE failed.
登陆邮箱代码如下:
String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
Properties props= new Properties();
props.put("mail.imaps.ssl.enable", "true");
props.put("mail.imaps.sasl.enable", "true");
props.put("mail.imaps.port", port);
props.put("mail.imaps.auth.mechanisms", "XOAUTH2");
props.put("mail.imaps.sasl.mechanisms", "XOAUTH2");
props.put("mail.imap.starttls.enable", mail\_ssl\_enable);
props.put("mail.imap.ssl.enable",mail\_ssl\_enable);
props.put("mail.imap.auth", "true");
props.put("mail.imap.auth.mechanisms", "XOAUTH2");
props.setProperty("mail.imaps.socketFactory.class", SSL\_FACTORY);
props.setProperty("mail.imaps.socketFactory.fallback", "false");
props.setProperty("mail.imaps.socketFactory.port", port);
props.setProperty("mail.imaps.starttls.enable", "true");
props.put("mail.debug", "true");
props.put("mail.debug.auth", "true");
if(username.toLowerCase().contains("hotmail") || username.toLowerCase().contains("outlook")) {
password=OutlookOAuth2.getToken();
}
HashMap IAM = new HashMap();
IAM.put("name",username);
IAM.put("version","1.0.0");
IAM.put("vendor","myclient");
IAM.put("support-email",username);
Session session = Session.getDefaultInstance(props, null);
session.setDebug(true);
IMAPStore store =(IMAPStore) session.getStore(protocol);
store.connect(host, username, password);
对应登陆邮箱日志如下:
2024-04-30 11:29:19.593[1714447759593] | INFO | main - token ok
DEBUG: JavaMail version 1.6.2
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: setDebug: JavaMail version 1.6.2
DEBUG: getProvider() returning javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle]
DEBUG IMAP: mail.imap.fetchsize: 16384
DEBUG IMAP: mail.imap.ignorebodystructuresize: false
DEBUG IMAP: mail.imap.statuscachetimeout: 1000
DEBUG IMAP: mail.imap.appendbuffersize: -1
DEBUG IMAP: mail.imap.minidletime: 10
DEBUG IMAP: enable STARTTLS
DEBUG IMAP: closeFoldersOnStoreFailure
DEBUG IMAP: trying to connect to host "outlook.office365.com", port 993, isSSL true
* OK The Microsoft Exchange IMAP4 service is ready. [UwBJADIAUABSADAANABDAEEAMAAwADEAMQAuAGEAcABjAHAAcgBkADAANAAuAHAAcgBvAGQALgBvAHUAdABsAG8AbwBrAC4AYwBvAG0A]
A0 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS MOVE ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
A0 OK CAPABILITY completed.
DEBUG IMAP: AUTH: PLAIN
DEBUG IMAP: AUTH: XOAUTH2
DEBUG IMAP: protocolConnect login, host=outlook.office365.com, user=******@domain.com, password=<non-null>
A1 AUTHENTICATE XOAUTH2 dXNlcj15dW5vbmdtYWlsQGhvdG1haWwuY29tAWF1dGg9QmVhcmVyIGV5SjBlWEFpT2lKS1YxUWlMQ0p1YjI1alpTSTZJbHBpVkZCUmFVUldlVlZ5YVZSblpEazRSakpQTlVNM09WUjFOM0poWDNVeWRURm9OSGhPVkVwTmNFa2lMQ0poYkdjaU9pSlNVekkxTmlJc0luZzFkQ0k2SWt3eFMyWkxSa2xmYW01WVluZFhZekl5ZUZwNGR6RnpWVWhJTUNJc0ltdHBaQ0k2SWt3eFMyWkxSa2xmYW01WVluZFhZekl5ZUZwNGR6RnpWVWhJTUNKOS5leUpoZFdRaU9pSm9kSFJ3Y3pvdkwzQnpMbTkxZEd4dmIyc3VZMjl0SWl3aWFYTnpJam9pYUhSMGNITTZMeTl6ZEhNdWQybHVaRzkzY3k1dVpYUXZOMlEyTWprelpqa3RNR1kzTWkwME1qRmtMVGhtWlRjdFpEbGlabU00Wm1ZMFpEY3pMeUlzSW1saGRDSTZNVGN4TkRRME56UTFPU3dpYm1KbUlqb3hOekUwTkRRM05EVTVMQ0psZUhBaU9qRTNNVFEwTlRFek5Ua3NJbUZwYnlJNklrVXlUbWRaUkdwTVpta3hTelF2Y2xKQk4wbDJOWHBOUjB0NVlrMUNkMEU5SWl3aVlYQndYMlJwYzNCc1lYbHVZVzFsSWpvaWFXMWhjRElpTENKaGNIQnBaQ0k2SW1Kak16RTROemN4TFRZMk1XRXROREJsWWkwNU5URm1MVEZpTmpFeE1EVmxaRFU1WmlJc0ltRndjR2xrWVdOeUlqb2lNU0lzSW1sa2NDSTZJbWgwZEhCek9pOHZjM1J6TG5kcGJtUnZkM011Ym1WMEx6ZGtOakk1TTJZNUxUQm1Oekl0TkRJeFpDMDRabVUzTFdRNVltWmpPR1ptTkdRM015OGlMQ0p2YVdRaU9pSXhNR0UxTnpka05TMDFNbUZsTFRRd1pEVXRPVGxsTUMwME1USXlZemMwTnpZeVl6VWlMQ0p5YUNJNklqQXVRV05aUVMxYVRtbG1XRWxRU0ZWTFVEVTViVjk1VURsT1kzZEpRVUZCUVVGQlVFVlFlbWRCUVVGQlFVRkJRVVJIUVVGQkxpSXNJbk5wWkNJNkltWTNaamcxTWpJNExXRmtaVGd0TkRJNU1DMWhOakkwTFRsaE1UUTFaR1ExTlRNeU1DSXNJbk4xWWlJNklqRXdZVFUzTjJRMUxUVXlZV1V0TkRCa05TMDVPV1V3TFRReE1qSmpOelEzTmpKak5TSXNJblJwWkNJNklqZGtOakk1TTJZNUxUQm1Oekl0TkRJeFpDMDRabVUzTFdRNVltWmpPR1ptTkdRM015SXNJblYwYVNJNklsZHdhR3RtYzJSaUxUQlBhMGxYWTJoRVRWRTFRa0VpTENKMlpYSWlPaUl4TGpBaUxDSjNhV1J6SWpwYklqQTVPVGRoTVdRd0xUQmtNV1F0TkdGallpMWlOREE0TFdRMVkyRTNNekV5TVdVNU1DSmRmUS5XWE4tZzg5X2JFRDJiTFg1a3U4VnFuYVppV3Q3Qkp5OEtsODFvOE5VMGJsczdmdUh2cnNZTVBUbTA0dzR6U3NUaHRESXV6a2VNZ0pYVURMTWlpbGQyOVZHSE04LXJzczRvR2VCSjg4Tlhoc0JrY3hSM2N2alYwejBFYTFHaUNVeWJfRUcxd0RmV1FuWlJVWnAwejdVQlU3NEY2X1Q2OWFVZ1oxYnltOHpHaE9NdVZEZHNCRjQ4aVI2Q0dCdWU5ZzM3QkZNVzhkT3ZqZ2tDTXRwNGFfMjlpbDlFN3JwNEFBQTBGbzFwMFBIeURmMmhaUDctSm1LUXFFYWN0NFZGSlFmQ1ZzaUN5Q0ZOWkNzUnJCNnJhV2EzMm1qa3FlV3ZMTGVVN3J0VHFHWDdWb2pMZjlKVG93TE9RX2R0aURiWGZHX3ZybWVOWjJsdzlqcEpmVHhvaGJVOGcBAQ==
A1 NO AUTHENTICATE failed.
2024-04-30 11:29:23.672[1714447763672] | ERROR | main - 处理产生异常,fullErrMessage: AUTHENTICATE failed.
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)
请各位专家帮给个指导,该如何通过javamail正常登陆outlook读取邮件,谢谢。