2

このコードの何が問題になっていますか? hMailServer を使用してローカルホストにメールを送信しようとしていますが、機能していません。このコードは Gmail SMTP サーバーで機能していますが、エラーは hMailServer にあると思うかもしれませんが、見つかりません..

    try{
    String host = "127.0.0.1";
    String from = "account@127.0.0.1";
    String pass = "1q2w#E$R";
    Properties props = System.getProperties();
    props.put("mail.smtp.starttls.enable", "true"); // added this line
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.user", from);
    props.put("mail.smtp.password", pass);
    props.put("mail.smtp.port", "25");
    props.put("mail.smtp.auth", "true");

    String[] to = {"test@test.com"}; // added this line

    Session session = Session.getDefaultInstance(props, null);
    MimeMessage message = new MimeMessage(session);
    message.setFrom(new InternetAddress(from));

    InternetAddress[] toAddress = new InternetAddress[to.length];

    // To get the array of addresses
    for( int i=0; i < to.length; i++ ) { // changed from a while loop
        toAddress[i] = new InternetAddress(to[i]);
    }
    for( int i=0; i < toAddress.length; i++) { // changed from a while loop
        message.addRecipient(Message.RecipientType.TO, toAddress[i]);
    }
    message.setSubject("sending in a group");
    message.setText("Welcome to JavaMail");
    Transport transport = session.getTransport("smtp");
    transport.connect(host, from, pass);
    transport.sendMessage(message, message.getAllRecipients());
    transport.close();
    }
    catch (Exception e) {
        e.printStackTrace();
    }

これは私が得ているエラーです:

    javax.mail.MessagingException: Could not connect to SMTP host: 127.0.0.1, port: 25;
nested exception is:
    java.net.SocketException: Permission denied: connect
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1213)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:311)
    at javax.mail.Service.connect(Service.java:233)
    at javax.mail.Service.connect(Service.java:134)
    at nl.company.cms.login.emailservice.TestMail.main(TestMail.java:71)

私はhMailServerを使用しています..

4

5 に答える 5

3

Java 7 を使用している場合は、アプリケーションの起動時にこれを JVM パラメータとして追加してみます。

-Djava.net.preferIPv4Stack=true

Java は現在 IPv6 を使用しようとしているため、代わりに IPv4 スタックを優先するように指示する必要があるため、これが必要になる場合があります。

于 2012-05-02T12:13:46.540 に答える
1

Tomcat の catalina.bat に記述されたこのパラメーター「-Djava.net.preferIPv4Stack=true」のみが、Spring Web アプリからローカルの hMailServer インスタンスにメールを送信するのに役立ったことを確認しました。環境: Windows 8、Java 7u60。

于 2014-12-16T23:14:45.827 に答える
1

Xampp を使用している場合は、Mercury が起動していないと javaMail でポート 25 が機能しないため、Mercury がマシン上で実行されていることを確認してください。

于 2012-10-12T23:42:57.313 に答える
0

ECLIPSEの「実行構成」にパラメーター「-Djava.net.preferIPv4Stack = true」を追加する@Quantasから提供された提案を実装するだけで、例外mail.Messaging Exceptionを取得するという私の問題が解決されたことを確認できます。

過去 2 日間から、「偽の SMTP メール サーバー」を使用して、Eclipse で実行されているアプリケーションから送信されるメールをトラップしているときに、次の例外が発生しました。

javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;

この小さなコードをECLIPSE LUNAの「実行構成」の「VM ARGUMENTS」に入れるだけで、問題は完全に解決されました。

-Djava.net.preferIPv4Stack=true

以下のスナップショットに示すように

ここに画像の説明を入力

これは、Java が IPV6 の代わりに IPV4 スタックを使用することを好むことを示唆しています (以前は優先していました)。

于 2015-08-04T11:26:06.430 に答える