无法连接到james服务器localhost

时间:2009-09-28 05:46:08

标签: java javamail james

我正在尝试连接到James服务器localhost,但我得到了一个异常

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 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

这是代码,它抛出异常:

我没有更改james-2.3.2子目录的配置文件中的任何内容,那么我为什么 得到那个例外?

这是代码,它抛出异常:

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class mail{

public static void main(String[] argts){




        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)) // we have mail to send
        {

        try {




        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 个答案:

答案 0 :(得分:1)

例外是说localhost无法访问。我希望您的机器没有正确配置其环回网络地址(localhost / 127.0.0.1)。

编辑:我假设你在同一台机器上运行客户端和服务器。如果没有,则不能使用localhost / 127.0.0.1。

答案 1 :(得分:1)

我总是尝试telnet到邮件主机上的端口25,以检查是否可以访问服务器。尝试连接到127.0.0.1以检查James是否接受传入连接。我猜你已经检查了詹姆斯的日志错误?

答案 2 :(得分:1)

尝试使用IP地址127.0.0.1而不是主机名“localhost” - 可能未正确设置计算机上的DNS查找,因此它不知道“localhost”的名称含义。

打开文件C:\Windows\System32\drivers\etc\hosts,并确保它包含如下所示的行:

127.0.0.1       localhost

另外,请尝试关闭防火墙或防病毒软件。

答案 3 :(得分:0)

  • 尝试在linux中以root用户身份启动apache james,或者以as身份启动 管理员在Windows上。并检查服务器是否成功 是否已启动日志文件夹中的james-server.log文件
  • 在主机文件中添加主机名

    127.0.0.1       localhost
    
  • 放置文件

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