2012-05-16 1 views
2

애플리케이션의 알림을 테스트하기 위해 JavaMail을 사용하여 이러한 알림을 확인합니다. 첨부 여부에 상관없이 알림을 테스트했습니다. 첫 번째 테스트는 첨부 파일없이 전자 메일에 정상적으로 실행됩니다. 확인되면 이메일을 삭제하고 애플리케이션에서 첨부 파일이있는 다른 알림을 발송합니다. 이제 나는 그 문제에 직면 해있다. 내받은 편지함에는 이메일이 하나 있지만 두 개의 스레드가 있기 때문에 (첨부 파일이없는 첫 번째 이메일과 첨부 파일이있는 최신 이메일은 모두 동일한 제목을 사용하므로 동일한 이메일에서 두 개의 스레드로 끝납니다.) 첨부 파일이 포함 된 전자 메일을 기대하지만 내 코드 대신 오류 코드를 읽으므로 오류가 발생합니다. 즉, 이전 알림이 올바르게 삭제되지 않았습니까? 이것은 내가 그것을 어떻게 있습니다 :JavaMail을 사용하여 Gmail에서 이메일의 최신 스레드를 읽는 방법은 무엇입니까?

//If all messages are read, mark the latest read message as deleted 
if(folder.getUnreadMessageCount() == 0){ 
    message.setFlag(Flags.Flag.DELETED, true); 
} 

//If any message is marked deleted, delete that message from folder 
if(message.isSet(Flags.Flag.DELETED)){ 
    folder.expunge(); 
} 

가 나는 또한 추가 한 최초의 통지가 영구적으로 삭제됩니다 것을 100 % 확인하기 위해 다음

folder.close(true); 

내가 뭔가를 놓치고 있습니까? 아니면 이메일의 스레드를 구분할 수있는 방법이 있습니까?

답변

1

메시지를 올바르게 삭제하는 것처럼 보이지만 실제로 세션 디버깅을 켜고 프로토콜 추적을보고 무슨 일이 진행되는지 확인하는 것이 좋습니다. 지침은 JavaMail FAQ을 참조하십시오.

+0

전자 메일을 성공적으로 삭제하는 방법을 찾았습니다. 메시지를 DELETED로 표시하는 대신 휴지통 폴더로 옮겼습니다. 그랬어! 멸망 할 필요가 없다. // 읽은 메시지를 복사하기 위해 휴지통 폴더 가져 오기 Folder trash = store.getFolder ("[Gmail]/Trash"); trash.open (folder.READ_WRITE); 모든 메시지를 읽 // 경우 최신 메시지 를 삭제하면 (folder.getUnreadMessageCount() == 0) { folder.copyMessages (새 메시지 [] {메시지}, 쓰레기); } – Ziska

0

시도해 보니 매력적이었습니다.

//Get Trash folder to copy messages that are read 
Folder trash = store.getFolder("[Gmail]/Trash"); 
trash.open(folder.READ_WRITE); 

//If all messages are read, delete the latest message 
if(folder.getUnreadMessageCount() == 0) 
{ 
    folder.copyMessages(new Message[] {message}, trash); 
} 
관련 문제