2009-09-28 4 views
0
나는 제임스 서버 로컬 호스트에 연결을 시도하고

에 연결,하지만 난 예외를 받고 있어요실패는 제임스 서버 로컬 호스트

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 

다음은 예외를 throw하는 코드입니다.

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의 콘솔 출력은 무엇입니까? './james start console'을 시도하십시오. 또한 : ./ 제임스 도움. 제임스가 sudo로 실행되는 루트 권한이 필요하다는 것을 알았습니다. – Thufir

답변

1

예외가 로컬 호스트에 접근 할 수없는 말을한다 :

여기에 예외를 throw하는 코드입니다. 귀하의 컴퓨터에 루프백 네트워크 주소 (localhost/127.0.0.1)가 올바르게 구성되지 않았 으면합니다.

편집 : 동일한 컴퓨터에서 클라이언트와 서버를 실행하고 있다고 가정합니다. 그렇지 않으면 localhost/127.0.0.1을 사용할 수 없습니다.

+0

동일한 컴퓨터에서 클라이언트와 서버를 실행하고 있습니다. 루프백 네트워크 주소를 어떻게 설정할 수 있습니까? 제임스 서버를 구성하는 방법에 대해서는 잘 모릅니다. – Dusk

+0

어떤 운영 체제입니까? –

+0

사실 ... 질문은 superuser.com에서 더 잘 묻습니다. –

1

항상 메일 호스트의 포트 25에 텔넷하여 서버에 연결할 수 있는지 확인합니다. James가 들어오는 연결을 수락하는지 확인하려면 127.0.0.1에 연결하십시오. 제임스의 기록에 오류가 있는지 확인한 적이 있습니까?

1

'localhost'라는 호스트 이름 대신 IP 주소 127.0.0.1을 사용하십시오. 'localhost'라는 이름이 무엇인지 알지 못하도록 컴퓨터에서 DNS 조회가 제대로 설정되지 않았을 수 있습니다.

열고 파일 C:\Windows\System32\drivers\etc\hosts하고,이 같은 줄이 포함되어 있는지 확인하십시오

또한
127.0.0.1  localhost 

, 방화벽 또는 바이러스 백신 소프트웨어를 전환 해보십시오.

0
  • Linux에서 루트 사용자로 apache james를 시작하거나 Windows에서 관리자로 시작하십시오. 서버를 확인하는 는
  • 귀하의 호스트 파일을 배치

    127.0.0.1  localhost 
    
  • 파일에 호스트 이름을 추가 로그 폴더에 제임스-server.log에 파일을 시작 여부에 성공

    on linux /etc/hosts 
    on windows C:\Windows\System32\drivers\etc\hosts 
    
  • 및 서버를 다시 시작하십시오.