2009-09-28 236 views
0

我試圖連接到James服務器本地主機,但我發現了一個異常無法連接到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 

我的詹姆斯服務器的目錄結構:

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 = "[email protected]"; 



     String from = "[email protected]"; 
     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(); 
     } 


     } 

    } 


} 
+0

詹姆斯的控制檯輸出是什麼?嘗試'./james start console'。還有:'./james help'。我發現James需要root權限,使用sudo運行。 – Thufir 2012-08-16 23:33:40

回答

1

唯一的例外是說,本地主機不可達。我希望你的機器沒有正確配置它的環回網絡地址(localhost/127.0.0.1)。

編輯:我假設你在同一臺機器上運行客戶端和服務器。如果不是,則不能使用localhost/127.0.0.1。

+0

我在同一臺機器上運行客戶端和服務器;你能告訴我如何配置環回網絡地址?我不知道如何爲James Server配置它。 – Dusk 2009-09-28 06:18:52

+0

什麼操作系統? – 2009-09-28 06:48:47

+0

其實......像這樣的問題在superuser.com上問得好 – 2009-09-28 06:49:45

1

我總是嘗試telnet到郵件主機上的端口25,以檢查是否可以訪問服務器。嘗試連接到127.0.0.1以檢查James是否接受傳入連接。我猜你已經檢查過詹姆斯的日誌了嗎?

1

嘗試使用IP地址127.0.0.1而不是主機名'localhost' - 可能您的計算機上的DNS查找設置不正確,以至於它不知道名稱'localhost'的含義。

打開文件C:\Windows\System32\drivers\etc\hosts,並確保它包含這樣一行:

127.0.0.1  localhost 

此外,嘗試關閉您的防火牆或防病毒軟件。

0
  • 嘗試在Linux中以root用戶身份啓動apache james或在Windows上以 管理員身份啓動。並檢查服務器是否成功 在日誌文件夾啓動或不詹姆斯 - server.log文件
  • 添加主機名上您的主機文件

    127.0.0.1  localhost 
    
  • 文件放在

    on linux /etc/hosts 
    on windows C:\Windows\System32\drivers\etc\hosts 
    
  • 和重啓你的服務器。