JavaMail - IMAP: A1 НЕТ ВХОДА - PullRequest
       67

JavaMail - IMAP: A1 НЕТ ВХОДА

0 голосов
/ 09 ноября 2018

Я знаю, что этот вопрос задавался ранее пару раз, но я попробовал каждое решение, которое нашел в каждом вопросе, и ни одно из них не сработало, у меня есть 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

Я знаю, что код не идеален, но он работает с любым другим электронным письмом, с которым я его использую, это всего лишь одно конкретное письмо, которое внезапно перестало работать, пожалуйста, помогите, я не знаю, что еще сделать или попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...