2011-01-18 4 views
0

первую очередь, простите за мой английский (я из Испании)JavaMail, Weblogic, IMAP, SSL и Exchange 2010

Я пытаюсь подключиться к почтовому серверу 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: Команда получила в недопустимом состоянии. Пользовательский параметр представляет собой комбинацию «domain \ user-login \ mail-box-alias». Я использую это, потому что я видел это таким образом в руководстве. Я уже установил действительную сертификацию SSL на моем сервере Weblogic.

Я не знаю, где ошибка.

С отладки я получаю это:

DEBUG: getProvider() возвращение javax.mail.Provider [STORE, IMAP, com.sun.mail.imap.IMAPStore, Sun Microsystems, Inc]

OK Служба IMAP4 Microsoft Exchange готова.

A0 ВОЗМОЖНОСТЬ

ВОЗМОЖНОСТЬ IMAP4 IMAP4rev1 LOGINDISABLED STARTTLS ДЕТИ IDLE NAMESPACE LITERAL +

A0 OK ВОЗМОЖНОСТЬ завершено.

A1 LOGIN "домен \ пользователь \ Mailbox псевдоним" пароль

A1 BAD Команда получила в недопустимом состоянии.

ОШИБКА 2: javax.mail.AuthenticationFailedException: команда получена в недопустимом состоянии.

ответ

0

Наконец-то я решил эту проблему. Это была проблема версии javamail, она была слишком старой для Exchange 2010. Я обновил версию 1.4 и работал. До сих пор я использовал Javamail 1.1.3.

+0

эй, решил проблему? Можете ли вы мне помочь (stackoverflow.com/q/36483341/3703397)? – Marin

0

Убедитесь, что Exchange 2010 настроен так, чтобы разрешить вход в систему на основе пользователя/pwd.

2

Если вы используете порт 993, вы хотите imaps вместо imap в качестве протокола:

Store store = session.getStore("imaps"); 

В порту 143, соединение открытым текстом. Затем вы можете при необходимости запустить уровень шифрования TLS, выпустив команду STARTTLS IMAP. (Это то, что контролируется собственностью mail.imap.starttls.enable.)

На порту 993 начальное соединение должно быть - это зашифрованное SSL-соединение. Это SSL-соединение должно быть выполнено до того, как любой текст будет отправлен или получен от сервера.

+0

Я не уверен, что это значит. Должен ли я каким-то образом шифровать пользователя и пароль? Есть ли пример кода? Я ничего не нахожу. – WedgeSparda

+0

Нет. Все, что вам нужно сделать, это изменить «imap» на «imaps» так же, как в этой строке кода кода, который я включил. Остальное объяснение для любого, кто заботится о деталях, почему, но вам не нужно понимать это, чтобы заставить вещи работать. – dkarp

+0

Я сделал это, и теперь я получаю это исключение "javax.mail.NoSuchProviderException: Нет провайдера для imaps " – WedgeSparda

Смежные вопросы