Вопрос

Прежде всего, извините за мой английский (я из Испании)

Я пытаюсь подключиться к почтовому серверу 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top