Не удается подключиться к Hotmail с помощью JavaMail
Во-первых, позвольте мне извиниться, если это дублирующий вопрос. За последние пару календарных месяцев я пытался отправить электронную почту, используя JavaMail; через мой аккаунт Hotmail. Я использовал многочисленные советы и фрагменты кода, которые были опубликованы на этом сайте в прошлом по этой теме; Тем не менее, я все еще получаю java.net.ConnectException: соединение отказано... когда я выполняю метод Transport.connect
Вот мой код
String fromUserName = "testEmailAddress@hotmail.com";
String fromEMailAddress = "My Email Test <testEmailAddress@hotmail.com>";
String fromEmailPassword = "testEmailPassword";
String emailServerName = "smtp.live.com";
String emailServerPort = "587";
String toEMailAddress = "<TestDestinationEmailAddress@gmail.com>";
Properties emailProps = System.getProperties();
emailProps.put("mail.smtps.host", emailServerName);
emailProps.put("mail.smtps.auth", "true");
emailProps.put("mail.transport.protocol", "smtps");
emailProps.put("mail.smtps.starttls.enable", "true");
emailProps.put("mail.smtps.ssl.enable","true");
emailProps.put("mail.smtps.port", emailServerPort);
emailProps.put("mail.debug", "true");
Authenticator localAuthenticator = new SMTPAuthenticator(fromUserName, fromEmailPassword);
Session emailSession = Session.getInstance(emailProps, localAuthenticator);
try {
SMTPTransport emTransport = (SMTPTransport) emailSession.getTransport("smtps");
emTransport.connect(emailServerName, Integer.parseInt(emailServerPort), fromUserName, fromEmailPassword);
System.out.println("Ok, we connected ok.");
MimeMessage emailMsg = new MimeMessage(emailSession);
emailMsg.addRecipient(Message.RecipientType.TO, new InternetAddress(toEMailAddress));
emailMsg.setFrom(new InternetAddress(fromEMailAddress));
emailMsg.setSubject("Automated Notification Number 1");
emailMsg.setContent(getHtmlContent(), "text/html");
emTransport.sendMessage(emailMsg, emailMsg.getAllRecipients());
System.out.println("Sent Message#: 1");
} catch (Exception e) {
e.printStackTrace();
}
И вот исключение...
DEBUG JavaMail version 1.4.5
DEBUG successfully loaded resource: /META-INF/javamail.default.providers
DEBUG SMTP useEhlo true, useAuth true
DEBUG SMTP trying to connect to host "smtp.live.com", port 587, isSSL true
javax.mail.MessagingException: Could not connect to SMTP host: smtp.live.com, port: 587;
nested exception is:
java.net.ConnectException: Connection refused: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
at javax.mail.Service.connect(Service.java:295)
at com.acf.TestingClasses.EmailSendingGames.sendMail(Unknown Source)
at com.acf.TestingClasses.EmailSendingGames.main(Unknown Source)
Caused by: java.net.ConnectException: Connection refused: connect
Пара вещей:
- Я пробовал "smtp" и "smtps"... это не имеет значения
- Я пробовал порты: 25, 465, 587 и 995... все еще отказывается от соединения
- Я пробовал код на многих компьютерах с одинаковыми результатами.
- Вырежьте и вставьте код из демонстрационного кода JavaMail, но все равно получите ошибку.
- Код работает для Yahoo, AT & T, Gmail и других... но не Hotmail!
2 ответа
Я удалил все вещи "socketFactory", как в Использование javamail для отправки из Hotmail? Тогда все работало нормально...
Ниже приведена функция:
private Properties _setProperties() {
Properties props = new Properties();
props.put("mail.smtp.host", _host);
if(_debuggable) {
props.put("mail.debug", "true");
}
if(_auth) {
props.put("mail.smtp.auth", "true");
}
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", _host);
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.port", _port);
return props;
}
Предположительно, вы уже читали эту статью FAQ по JavaMail.
Вы также попробовали подсказки отладки здесь?
Из отладочной информации, которую вы опубликовали, похоже, что у вас есть брандмауэр или что-то, что мешает вам подключиться к этому сайту.