2009-09-23 4 views
29

설명 : here처럼 IMAP 프로토콜을 사용하여 서버로부터 전자 메일을 수신하고 있습니다. 이것은 매우 잘 작동하고 있으며 전자 메일과 첨부 파일을 디스크에 저장할 수 있습니다. javax.mail을 사용하여 서버에서 전자 메일을 삭제하십시오.

질문 : 클라이언트가 모든 이메일을 수신 할 때, 더 이상 사용할 수 있도록 내가, 서버에서 파일을 삭제 할 수있는 가능성이 없다 있습니까? 그렇다면 어떻게 말해주십시오.

답변

58

표준 API를 통해이 작업을 수행 할 수 있어야합니다.

먼저 삭제하려는 Message (또는 메시지)에 대한 참조를 가져와야합니다. 성공적으로 읽는 경우 이미 수행 할 수 있습니다. 이제이 명시 적으로 삭제() 작업 없지만과 같이 삭제 된 당신은 메시지를 표시 할 수 있습니다 : 삭제 된

message.setFlag(Flags.Flag.DELETED, true); 

이것은 삭제 작업 데스크톱 IMAP 클라이언트에서 무엇을 할 것 인 일반적이다 (메시지를 표시합니다). 당신은 그들이 거주하고있는 Folder (들)을 완료 할 때 삭제 된 메시지를 강제하기 위해 영구 삭제하기 위해, 진정한 플래그가 모두 삭제 된 메시지를 영구 삭제 서버에 지시

folder.close(true); 

를 호출합니다.

그리고 voila! 클라이언트는 IMAP 클라이언트로 서버에 연결할 때 더 이상이 메시지를 볼 수 없습니다.

편집 :

그렇지 않으면 메시지가 실제로 서버에서 삭제되지 않습니다 READ_WRITE 모드에서 폴더를 열 것을 잊지 마십시오.

folder.open(Folder.READ_WRITE); 

참조 : http://java.sun.com/developer/onlineTraining/JavaMail/contents.html#JavaMailDeleting

+1

그런 다음 그것을 대답 사용 플래그를 제공합니다. – Koekiebox

+0

메서드 이름은 [setFlag]가 아님 [setFlags] [message.setFlag (Flags.Flag.DELETED, true)]] –

+0

@ MohammedSayed가되어야합니다. 최근 버전의 API 변경으로 인한 것일 수 있다고 생각했지만 아니요. 거의 4 년 동안 잘못되었습니다. –

관련 문제