0

まず、これが重複した質問である場合はお詫び申し上げます。ここ数か月間、私は JavaMail を使用して電子メールを送信しようと試みてきました。Hotmail アカウント経由で。このトピックに関して、過去にこのサイトに投稿された多数のヒントとコード スニピットを使用しました。ただし、Transport.connect メソッドを実行すると、まだ java.net.ConnectException: Connection reject... が発生します。

これが私のコードです

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 では機能しません!

4

2 に答える 2

0

おそらく、この JavaMail FAQ エントリをすでに読んでいると思います。

こちらのデバッグのヒントも試しましたか?

投稿したデバッグ出力から、ファイアウォールまたはそのサイトへの接続を妨げている何かがあるようです。

于 2012-07-25T22:41:40.213 に答える