JavaMail и Hotmail не работают на Android - PullRequest
1 голос
/ 16 сентября 2010

У меня проблемы с отправкой писем с адреса горячей почты с использованием JavaMail.Я подтвердил, что могу подключиться к smtp.live.com через порт 587 telnet. Интересно (для меня), если я изменю:

host = "smtp.gmail.com" t.connect (host,имя пользователя Пароль);

Он прекрасно подключается к Gmail через порт по умолчанию и отправляет электронное письмо.

Но если я изменю код на:

host = "smtp.live.com" t.connect (host, 587, имя пользователя, пароль);Это дает мне следующую ошибку:

javax.mail.MessagingException: Не удалось подключиться к узлу SMTP: smtp.live.com, порт: 587;

Вложенное исключение:

java.io.IOException: ошибка рукопожатия SSL: сбой в библиотеке SSL, обычно ошибка протокола

ошибка: 140770FC: процедуры SSL: SSL23_GET_SERVER_HELLO: неизвестный протокол (внешний / openssl / ssl / s23_clnt.c: 6040xaf076228: 0x00000000)

С помощью session.setDebug (true) я получаю эту информацию:

09-15 01: 57: 37.280: INFO / System.out (720): DEBUG: getProvider () возвращение javax.mail.Provider [TRANSPORT, smtps, com.sun.mail.smtp.SMTPSSLTransport, Sun Microsystems, Inc., 1.4.1] 09-15 01: 57: 37.300: INFO / System.out (720):SMTP отладки: useEhlo true, useAuth true 09-15 01: 57: 37.310: INFO / System.out (720): DEBUG SMTP: пытается подключиться к хосту "smtp.live.com", порт 587, isSSL true 09-1501: 57: 37.330: INFO / SSLSocketFactory (720): использование фабрики org.apache.harmony.xnet.provider.jsse.OpenSSLSocketFactoryImpl@4007ed70 09-15 01:57:37.490: DEBUG / NativeCrypto (720): установлено значение SSL_OP_NO_SSLv3 09-15 01: 57: 37.538: ERROR / NativeCrypto (720): неизвестная ошибка 1 во время подключения

Похоже, что Hotmail плохо играет с OpenSSL.У кого-нибудь есть решение для этого?

Ниже мой код в ... на всякий случай, если он поможет.

Заранее спасибо,

J

String host = "smtp.live.com";

String username = foo@hotmail; 

String password = "**"; 

Transport t = null;

Properties props = new Properties();

props.put("mail.smtps.auth", "true");

//props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

Session session = Session.getInstance(props);

session.setDebug(true);

try{

MimeMessage msg = new MimeMessage(session);

msg.setSubject("Testing SMTP-SSL");

msg.setContent("This is a test", "text/plain");

msg.setFrom(new InternetAddress(username));


msg.setRecipients(Message.RecipientType.TO,

InternetAddress.parse(username, false));

t = session.getTransport("smtps");

t.connect(host,587, username, password);

t.sendMessage(msg, msg.getAllRecipients());

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

try {

t.close();

} catch (MessagingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} 

1 Ответ

0 голосов
/ 08 сентября 2014

У меня была такая же проблема с отправкой писем в Hotmail / Outlook ...

Я решил это, добавив порт фабрики сокетов всегда к 578 в ваших свойствах, таких как:

props.put("mail.smtp.socketFactory.port", "587");

и для hotmail порт - 25.

props.put("mail.smtp.port", "25");

Немного поздно, но, возможно, это поможет;)

...