简体   繁体   English

无法连接到詹姆斯服务器本地主机

[英]Fail to connect to james server localhost

I'm trying to connect to James server localhost, but I'm getting an exception我正在尝试连接到 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

The directory structure of my James Server is:我的 James Server 的目录结构是:

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

Here's the code, which is throwing an exception:这是引发异常的代码:

I've not changed anything in the config file of james-2.3.2 subdirectory, then why I'm getting that exception?我没有更改 james-2.3.2 子目录的配置文件中的任何内容,那么为什么会出现该异常?

Here's the code, which is throwing an exception:这是引发异常的代码:

// 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();
            }
        }
    }
}

The exception is saying that localhost is unreachable.例外是说 localhost 无法访问。 I expect that your machine does not have its loopback network address (localhost / 127.0.0.1) correctly configured.我希望您的机器没有正确配置其环回网络地址 (localhost / 127.0.0.1)。

EDIT: I assume that you are running the client and server on the same machine.编辑:我假设您在同一台机器上运行客户端和服务器。 If not, you cannot use localhost / 127.0.0.1.如果没有,则不能使用 localhost / 127.0.0.1。

I always try to telnet to port 25 on the mailhost, to check if the server can be reached.我总是尝试 telnet 到邮件主机上的端口 25,以检查是否可以访问服务器。 Try to connect to 127.0.0.1 to check if James is accepting incoming connections.尝试连接到 127.0.0.1 以检查 James 是否正在接受传入连接。 I presume you have checked the logs of James for errors?我想你已经检查了 James 的日志是否有错误?

Try using the IP address 127.0.0.1 instead of the hostname 'localhost' - maybe DNS lookup on your machine is not set up properly, so that it doesn't know what the name 'localhost' means.尝试使用 IP 地址 127.0.0.1 而不是主机名 'localhost' - 也许您机器上的 DNS 查找设置不正确,因此它不知道名称 'localhost' 的含义。

Open the file C:\\Windows\\System32\\drivers\\etc\\hosts , and make sure it contains a line like this:打开文件C:\\Windows\\System32\\drivers\\etc\\hosts ,并确保它包含如下一行:

127.0.0.1       localhost

Also, try switching off your firewall or anti-virus software.另外,请尝试关闭防火墙或防病毒软件。

  • try to start apache james as root user in linux or start as Administrator on windows.尝试在 Linux 中以 root 用户身份启动 apache james 或在 Windows 中以管理员身份启动。 and check the server is successfully started or not on james-server.log file in logs folder并在日志文件夹中的 james-server.log 文件中检查服务器是否成功启动
  • add the host name on your hosts file在您的主机文件中添加主机名

    127.0.0.1 localhost
  • file placed放置的文件

    on linux /etc/hosts on windows C:\\Windows\\System32\\drivers\\etc\\hosts
  • and restart your server.并重新启动您的服务器。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM