Я знаю, что этот вопрос задавался ранее пару раз, но я попробовал каждое решение, которое нашел в каждом вопросе, и ни одно из них не сработало, у меня есть Java-приложение, которое подключается к почте и загружает все вложения из электронных писем, приложения работали более 1 месяца, но вдруг сегодня они перестали работать с одним конкретным письмом, со всеми остальными электронными письмами я обычно использую приложение, оно отлично работает, даже после того, как я попробовал все возможные решения, которые я нашел, я получаю то же самое A1 NO LOGIN failed.
Он всегда работал с именем пользователя и паролем, которые я использую, я убедился, что пароль не был изменен, войдя в систему с помощью Outlook и Outlook, и оба работали нормально. Я не думаю, что это что-то с брандмауэром, потому что он отлично работает со всеми другими электронными письмами, которые я использую, это просто одно электронное письмо, которое вдруг не работает.
Письма, которые я использую для подключения, принадлежат моей работе, у которой есть собственный домен с office365, ej.
mail@mydomain.com
Я попробовал приложение утром, и оно работало с этим конкретным письмом, через несколько часов я получил следующее исключение:
javax.mail.AuthenticationFailedException: LOGIN 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)
и отладчик возвращает следующее:
DEBUG: setDebug: JavaMail version 1.6.2
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 "outlook.office365.com", port 993, isSSL true
* OK The Microsoft Exchange IMAP4 service is ready. [QgBOADYAUABSADEAOQBDAEEAMAAwADYAMgAuAG4AYQBtAHAAcgBkADEAOQAuAHAAcgBvAGQALgBvAHUAdABsAG8AbwBrAC4AYwBvAG0A]
A0 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
A0 OK CAPABILITY completed.
DEBUG IMAPS: AUTH: PLAIN
DEBUG IMAPS: AUTH: XOAUTH2
DEBUG IMAPS: protocolConnect login, host=outlook.office365.com, user=theEmail@MyDomain.biz, password=<non-null>
DEBUG IMAPS: mechanism PLAIN disabled by property: mail.imaps.auth.plain.disable
DEBUG IMAPS: mechanism LOGIN not supported by server
DEBUG IMAPS: mechanism NTLM not supported by server
DEBUG IMAPS: mechanism XOAUTH2 disabled by property: mail.imaps.auth.xoauth2.disable
DEBUG IMAPS: LOGIN command trace suppressed
DEBUG IMAPS: LOGIN command result: A1 NO LOGIN failed.
мой код выглядит следующим образом:
public MailData office() {
MailData DATA= new MailData();
String PROTOCOL = "imaps", HOST = "outlook.office365.com", ENCRYPTION_TYPE = "tls", PORT = "993";
DATA=readEmail(PROTOCOL, HOST, uname, pwd, ENCRYPTION_TYPE, PORT);
return DATA;
}
public MailData readEmail(String PROTOCOL, String HOST, String USER, String PASSWORD, String ENCRYPTION_TYPE, String PORT) {
MailData INFO=new MailData();
Properties props = new Properties();
props.setProperty("mail.store.protocol", PROTOCOL);
props.setProperty("mail.debug.auth ","true");
props.setProperty("mail.imaps.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.imaps.socketFactory.fallback", "false");
props.setProperty("mail.imaps.ssl.enable", "true");
props.setProperty("mail.imaps.socketFactory.port",PORT);
props.setProperty("mail.imaps.starttls.enable", "true");
props.setProperty("mail.imaps.auth.plain.disable", "true");
try{
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.imaps.starttls.enable", "true");
props.put("mail.imaps.ssl.socketFactory", sf);
}catch(Exception e){
e.printStackTrace();
}
try {
Session session = Session.getInstance(props, null);
session.setDebug(true);
Store store = session.getStore("imaps");
store.connect(HOST, USER, PASSWORD);
////////////REST OF THE CODE
Я знаю, что код не идеален, но он работает с любым другим электронным письмом, с которым я его использую, это всего лишь одно конкретное письмо, которое внезапно перестало работать, пожалуйста, помогите, я не знаю, что еще сделать или попробовать.