У меня проблемы с отправкой писем с адреса горячей почты с использованием 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();
}
}