2013-04-05 3 views
0

java mail api를 사용하여 사용자 계정에서 메일을 읽으 려합니다.java mail api javax.mail.MessageException 연결 실패 pop3

메일 서버는 특정 메일 서버입니다 :

ReadEMail.java - 클라이언트

Properties props = System.getProperties(); 
props.put("mail.debug", "true"); 
props.put("mail.pop3.host", host); 
props.put("mail.pop3.port", port); 
props.put("mail.pop3.user", username); 
props.put("mail.pop3.timeout", "158000"); 
props.put("mail.pop3.connectiontimeout", "158000"); 
/* Create the session and get the store for read the mail. */ 
session = Session.getInstance(props); 
store = session.getStore("pop3"); 
session.setDebug(true); 
store.connect(host,username, password); 

클라이언트 측에서 오류 메시지가 :

DEBUG POP3: mail.pop3.apop.enable: false 

DEBUG POP3: mail.pop3.disablecapa: false 
DEBUG POP3: connecting to host "localhost", port 4444, isSSL false 
S: +OK Mail Server Ready 
C: CAPA 
S: 
javax.mail.MessagingException: Connect failed; 
    nested exception is: 
    java.io.IOException: Unexpected response: 
    at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:210) 
    at javax.mail.Service.connect(Service.java:295) 
    at javax.mail.Service.connect(Service.java:176) 
    at com.mail.reader.MailReader.connect(MailReader.java:67) 
    at com.mail.reader.TestMailReader.main(TestMailReader.java:21) 
Caused by: java.io.IOException: Unexpected response: 
    at com.sun.mail.pop3.Protocol.readResponse(Protocol.java:752) 
    at com.sun.mail.pop3.Protocol.multilineCommand(Protocol.java:766) 
    at com.sun.mail.pop3.Protocol.capa(Protocol.java:675) 
    at com.sun.mail.pop3.Protocol.<init>(Protocol.java:140) 
    at com.sun.mail.pop3.POP3Store.getPort(POP3Store.java:261) 
    at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:206) 
    ... 4 more 
+0

"mail.debug"및 "mail.debug.quote"를 "true"에 추가 할 수 있습니까? 그런 다음 이라는 프로토콜 추적을 System.out에 게시하십시오. – Jayamohan

+0

클라이언트와 서버를 디버깅하려고했습니다. 서버 측에서 모든 것이 괜찮은 것처럼 보입니다. (또한 telnet으로 pop3 포트를 테스트했는데 예상대로 작동합니다). 자바 메일 API를 사용하여 그것은 클라이언트가 CAPA 명령에 응답을 보내기 전에 클라이언트가 conn을 닫는 것 같습니다. 어떻게 이것을 해결하기 위해? –

+0

"mail.debug.quote"를 사용해 보셨습니까? 서버가 예기치 않은 것, 아마도 프로토콜 사양을 위반하는 빈 줄만 보내는 것 같습니다. "mail.debug.quote"를 설정하면 서버가 무엇을 반환하는지 정확히 알 수 있습니다. 텔넷을 사용할 때 CAPA 명령을 입력 할 때 서버는 무엇을 반환합니까? –

답변

0

는 불평 것 같다 점을 감안 CAPA에 대한 예기치 않은 응답에 대해 메일 서버가 비표준 응답을 보내는 것일 수 있습니다. mail.pop3.disablecapa을 true로 설정하면 CAPA를 전송하지 않습니다.

제쳐두고 System.getProperties();은 공유 속성 개체를 반환하지만 사용자가 의도 한 것이 맞는지 확실하지 않습니다. 어쩌면 new Properties();을 대신 할 수 있습니까?