Javamail, Weblogic, IMAP, SSL и Exchange 2010
-
12-10-2019 - |
Вопрос
Прежде всего, извините за мой английский (я из Испании)
Я пытаюсь подключиться к почтовому серверу Exchange 2010 с помощью IMAP и SSL от Javamail на сервере Weblogic 8.1.
Это мой код
Properties prop = new Properties();
// IMAP
// Disable TLS
prop.setProperty("mail.imap.starttls.enable", "false");
// Use SSL
prop.setProperty("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
prop.setProperty("mail.imap.socketFactory.fallback", "false");
// Use port 993
prop.setProperty("mail.imap.port", "993");
prop.setProperty("mail.imap.socketFactory.port", "993");
prop.setProperty("mail.imaps.class", "com.sun.mail.imap.IMAPSSLStore");
Session session = Session.getDefaultInstance(prop);
session.setDebug(true);
Store store = session.getStore("imap");
store.connect(host, user, password);
На данный момент я получаю javax.mail.authenticationFailedException: команда, полученная в неверном состоянииАнкет Пользовательский параметр представляет собой комбинацию «домен пользователь-логин mail-box-alias». Я использую это, потому что я видел это таким образом в руководстве по праву. Я уже установил действительный SSL -сертификат на своем сервере Weblogic.
Я не знаю, где ошибка.
С отладкой я получаю это:
DEBUG: GetProvider () возвращается javax.mail.provider [Store, imap, com.sun.mail.imap.imapstore, Sun Microsystems, Inc
ОК, сервис Microsoft Exchange IMAP4 готов.
A0 Возможность
Возможности imap4 imap4Rev1 logindisabled starttls дети простаивают имена Literal+
A0 OK PAPLICH завершена.
A1 Login "Domain user mailbox-alias" пароль "
A1 Bad Command, полученная в неверном состоянии.
Ошибка 2: javax.mail.AuthenticationFailedException: команда, полученная в неверном состоянии.
Решение 3
Наконец я решил эту проблему. Это была проблема версии Javamail, она была слишком старой для Exchange 2010. Я повысил до 1,4 версии и работал. До сих пор я использовал Javamail 1.1.3.
Другие советы
Если вы используете порт 993, вы хотите imaps
вместо imap
Как ваш протокол:
Store store = session.getStore("imaps");
На порту 143 соединение является открытым текстом. Затем вы можете начать слой шифрования TLS, выпустив STARTTLS
Команда imap. (Это то, что контролируется mail.imap.starttls.enable
имущество.)
На порту 993 начальное соединение должен быть зашифрованным SSL -соединением. Это рукопожатие SSL должно быть сделано до того, как какой -либо текст будет отправлен или получен с сервера.
Убедитесь, что Exchange 2010 настроен для разрешения логин на основе пользователя/PWD.