0

James サーバーのローカルホストに接続しようとしていますが、例外が発生します。

javax.mail.MessagingException: Could not connect to SMTP host: localhost, port:25;
 nested exception is:
            java.net.SocketException: Network is unreachable: connect
            at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1545)
            at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:453)
            at javax.mail.Service.connect(Service.java:313)      
            at javax.mail.Service.connect(Service.java:172) 
            at javax.mail.Service.connect(Service.java:121) 
            at javax.mail.Transport.send0(Transport.java:190)
            at javax.mail.Transport.send(Transport.java:120)
            at mail.main(mail.java:78)
    Caused by: java.net.SocketException: Network is unreachable: connect
            at java.net.PlainSocketImpl.socketConnect(Native Method)
            at java.net.PlainSocketImpl.doConnect(Unknown Source)
            at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
            at java.net.PlainSocketImpl.connect(Unknown Source)
            at java.net.SocksSocketImpl.connect(Unknown Source)
            at java.net.Socket.connect(Unknown Source)
            at java.net.Socket.connect(Unknown Source)
            at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:267)
            at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:227)
            at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1511)
            ... 7 more

私のJamesサーバーのディレクトリ構造は次のとおりです。

C:\apache-james-2.3.2
|
|
|
|------C:\apache-james-2.3.2\james-2.3.2
|
|------C:\apache-james-2.3.2\javamail-1.4.2
|
|------C:\apache-james-2.3.2\jaf-1.0.2

例外をスローしているコードは次のとおりです。

james-2.3.2 サブディレクトリの構成ファイルで何も変更していないのに、なぜその例外が発生するのでしょうか?

例外をスローしているコードは次のとおりです。

// imports omitted
public class mail {
    public static void main(String[] args) {
        String to = "blue@localhost";
        String from = "red@localhost";
        String subject = "Hello";
        String body = "What's up";
        if ((from != null) && (to != null) && (subject != null) && (body != null)) {
            try { // we have mail to send
                Properties props = new Properties();
                props.put("mail.host", "localhost");
                props.put("mail.smtp.auth", "true");
                props.put("mail.debug", "true");
                Session session = Session.getInstance(props, new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("red", "red");
                    }
                });
                Message message = new MimeMessage(session);
                message.setFrom(new InternetAddress(from));
                Address[] add = { new InternetAddress(to) };
                message.setRecipients(Message.RecipientType.TO, add);
                message.setSubject(subject);
                message.setContent(body, "text/plain");
                message.setText(body);
                Transport.send(message);
                System.out.println(" Your message to " + to + " was successfully sent.");
            } catch (Throwable t) {
                t.printStackTrace();
            }
        }
    }
}
4

4 に答える 4

1

サーバーに到達できるかどうかを確認するために、私は常にメールホストのポート25にtelnetで接続しようとします。127.0.0.1に接続して、Jamesが着信接続を受け入れているかどうかを確認してください。ジェームズのログでエラーをチェックしたと思いますか?

于 2009-09-28T06:12:57.093 に答える
1

ホスト名「localhost」の代わりに IP アドレス 127.0.0.1 を使用してみてください。マシンの DNS ルックアップが適切に設定されていないため、「localhost」という名前の意味がわからない可能性があります。

ファイルC:\Windows\System32\drivers\etc\hostsを開き、次のような行が含まれていることを確認します。

127.0.0.1       localhost

また、ファイアウォールまたはウイルス対策ソフトウェアをオフにしてみてください。

于 2009-09-28T08:18:54.900 に答える
1

例外は、localhost に到達できないということです。あなたのマシンには、ループバック ネットワーク アドレス (localhost / 127.0.0.1) が正しく構成されていないと思います。

編集: クライアントとサーバーを同じマシンで実行していると仮定します。そうでない場合は、localhost / 127.0.0.1 を使用できません。

于 2009-09-28T06:06:28.927 に答える
0
  • Linux では root ユーザーとして apache james を起動するか、Windows では管理者として起動してみてください。ログフォルダーのjames-server.logファイルで、サーバーが正常に起動したかどうかを確認します
  • hostsファイルにホスト名を追加します

    127.0.0.1       localhost
    
  • 置かれたファイル

    on linux /etc/hosts
    on windows C:\Windows\System32\drivers\etc\hosts
    
  • サーバーを再起動します。
于 2013-12-03T10:04:36.233 に答える