2013-07-02 5 views
0

Я пытаюсь отправить почту с помощью javax.mail с учетной записи hotmail .
До сих пор я тестировал свой код, используя аккаунт gmail, и все работает нормально, но с hotmail ничего не работает, я получаю MailConnectException.
Это код, который я использую для того, чтобы отправить почту:javax.mail не удалось отправить письмо hotmail

props.put("mail.starttls.enable", true); 
props.put("mail.smtp.host", "smtp.live.com"); 
props.put("mail.smtp.port", "25"); 
props.put("mail.debug", true); 
props.put("mail.smtp.auth", true); 

Как вы можете видеть, что я создал PropertiesFactory для того, чтобы создать конкретный экземпляр объекта Properties для каждого конкретного почтового узла, Я использую. В коде есть фабрика для структуры HotmailProperties.

Запуск сеанса отладки Я проверил, что параметр useAuth и isSSL равны false.
Что я могу изменить в конфигурации свойств? Может быть, есть и другие ошибки в коде?

Это отладочная результат моей программы: http://ideone.com/SDu4JG

решаемые Я решил свою проблему с сервером HOTMAIL. Глядя на эту страницу: http://windows.microsoft.com/en-us/windows/outlook/send-receive-from-app Я понял, что hotmail, в отличие от других почтовых серверов, таких как gmail и yahoo, учитывает имя пользователя как полный адрес электронной почты. Поэтому, когда я делаю логин, я всегда получаю сообщение об ошибке.

И, наконец, он работает. Спасибо вам за все.

+3

Stack следы исключения пожалуйста? –

+0

http://ideone.com/9g9JCn Это то, что я получил, когда выполняю программу. – AlessandroS

+0

props.put ("mail.smtps.port", "487"); ? – vels4j

ответ

0

Вы назвали свойства mail.smtp ей вместо mail.smtp

Существует уже вопрос, который решается, имеют вид: Java Mail over TLS

+0

Но этот вид работы должен активировать его. Или нет? – AlessandroS

+0

Да, так оно и есть (я бы понял, что вы не хотите его использовать). В этом случае вам необходимо дополнительно установить учетные данные (имя пользователя/пароль), иначе это не сработает. –

+0

props.put ("mail.starttls.enable", true); props.put ("mail.smtp.host", "smtp.live.com"); props.put ("mail.smtp.port", "25"); props.put ("mail.debug", true); props.put ("mail.smtp.auth", true); Должен ли я использовать эту конфигурацию? Это достаточно? – AlessandroS

1

Это работает для меня. Конечно, это будет работать для и : -

с портом 587: -

 props.setProperty("mail.transport.protocol", "smtp"); 
     props.setProperty("mail.smtp.host", "smtp.live.com"); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.port", "587"); 
     props.setProperty("mail.smtp.quitwait", "false"); 
     props.put("mail.smtp.starttls.enable", "true"); 

    Session smtpSession = Session.getInstance(props1, authenticator); 
     smtpSession.setDebug(true); 
+0

С кодом я получаю следующие ошибки: http://ideone.com/wLJL1q – AlessandroS

+0

может быть проблемой при аутентификации. я поддерживаю сессию из последних двух строк, и ее работа для меня –

+0

Большое вам спасибо. Я решил использовать ваши советы. – AlessandroS

1

Ваш отладочный вывод:

MAIL FROM:<[email protected]> 
530 5.7.0 Must issue a STARTTLS command first 
DEBUG SMTP: got response code 530, with response: 530 5.7.0 Must issue a STARTTLS command first 

Код состояния 530 означает, что клиент не прошел проверку подлинности. (Я гугле «ошибка SMTP код состояния 530», чтобы получить это)

Ваше сообщение выше показывает, что (безопасность транспортного уровня: шифрование) TLS требуется

Видимо, Hotmail требует, чтобы вы отправить почту через SMTPS и по умолчанию порт 587.

+0

DEBUG: setDebug: JavaMail версия 1.5.0 DEBUG: getProvider() return javax.mail.Provider [TRANSPORT, smtps, com.sun.mail. smtp.SMTPSSLTransport, Oracle] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: пытается подключиться к хосту «smtp.live.com», порт 587, isSSL true Это то, что я получил в качестве протокола smtps – AlessandroS

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