2012-11-15 3 views
0

아파치 제임스를 연결하는 웹 메일을 개발했습니다. 하지만 일부 사용자는 제임스의 이메일을받을 수 없습니다. mailSession.setDebug(true)을 설정하고 두 명의 사용자의 로그를 추적합니다 (sa는 수신 할 수 있고 다른 수신자는 수신 할 수 없음). 차이점은 아래에 보여줍니다
아파치 제임스로부터 이메일을받지 못합니다.

성공적으로 이메일을받을 수있는 사용자 (사용자 SA) :

[2012-11-15 14:24:12] com.csc.mail.jsh.mail.core.ReceiveMail : [INFO ] - trying to receive emails from james server... 
C: STAT 
S: +OK 2 2584 
C: NOOP 
S: +OK 
C: TOP 1 0 
S: +OK Message follows 
... 

다른 사용자가 수신 실패 (사용자의 차이) :

[2012-11-15 14:22:01] com.csc.mail.jsh.mail.core.ReceiveMail : [INFO ] - trying to receive emails from james server... 
C: STAT 
S: -ERR 
C: QUIT 
S: +OK Apache James POP3 Server signing off. 
[2012-11-15 14:22:03] com.csc.mail.jsh.mail.core.ReceiveMail : [ERROR] - Folder open failed:javax.mail.MessagingException: Open failed; 
nested exception is: 
    java.io.IOException: STAT command failed: null 
    at com.sun.mail.pop3.POP3Folder.open(POP3Folder.java:228) 
    at com.csc.mail.jsh.mail.core.ReceiveMail.receive(ReceiveMail.java:82) 
    at com.csc.mail.jsh.mail.core.ReceiveMail.run(ReceiveMail.java:222) 
    at java.lang.Thread.run(Thread.java:619) 
Caused by: java.io.IOException: STAT command failed: null 
    at com.sun.mail.pop3.Protocol.stat(Protocol.java:366) 
    at com.sun.mail.pop3.POP3Folder.open(POP3Folder.java:203) 
    ... 3 more 

내 코드가 나타납니다

Session mailSession = Session.getInstance(System.getProperties(), null); 
mailSession.setDebug(true); 
Store store = null; 
Folder folder = null; //javax.mail.Folder 
try { 
    store = mailSession.getStore("pop3"); 
    store.connect(Property.getPop3(), userName, password); 
    logger.info("trying to receive emails from james server..."); 
    folder = store.getFolder("INBOX"); 
    try { 
     if (!folder.isOpen()) { 
      folder.open(Folder.READ_WRITE); //the point of throwing the exception 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    //receive email from james server. 
} catch (Exception e) { 
    logger.error("Email Receive Error!" + StackTraceStr.st2str(e)); 
    try { 
     folder.close(true); 
    } catch (Exception e2) { 
    } 
} finally { 
    try { 
     store.close(); 
    } catch (Exception cloex) { 
    } 
} 

나는 here에 게시했습니다. 어떤 도움을 주셔서 감사합니다! 이 또 다른 스레드를 시작하는 이유는 확실하지 않다

답변

0

아파치 제임스와 접촉하여 결국 대답을 찾았습니다. 여기에서 찾으실 수 있습니다 : STAT command failed occasionally. 페이지 끝 부분에 스레드가 나열되었습니다.

0

은 ...

서버에 문제가있다. 서버 로그를 확인하십시오. STAT 명령은 실패했지만 실패 이유는보고하지 않습니다.

+0

감사합니다. @billshannon. 내가 디버그하고 디버그, 마침내 STAT 명령에 오류가 발생했을 때, 거기에 제임스의 예외가 있지만 그게 아무 의미 없어! "오류 pop3server : 127.0.0.1 (127.0.0.1)에서 연결 중 예외 : 데이터베이스 연결을 가져 오는 동안 예외가 발생했습니다." 모든 응용 프로그램은 동일한 서버에서 실행되며 소수의 사용자 만 있습니다 (테스트 할 때 나만 사용). 왜 DB에 연결할 수 없습니까? – Joshua

+0

잘 모르겠다. 아파치 제임스 전문가를 찾아야 할 것 같습니다. –