我正在使用IMAP協議從服務器接收電子郵件,如here所述。 這工作得很好,我可以將電子郵件和附件存儲在磁盤上。使用javax.mail刪除服務器上的電子郵件
問題: 我必須從服務器中刪除文件的可能性,讓他們不再可用,當一個客戶端嘗試接收所有電子郵件?如果是這樣,請告訴我如何。
我正在使用IMAP協議從服務器接收電子郵件,如here所述。 這工作得很好,我可以將電子郵件和附件存儲在磁盤上。使用javax.mail刪除服務器上的電子郵件
問題: 我必須從服務器中刪除文件的可能性,讓他們不再可用,當一個客戶端嘗試接收所有電子郵件?如果是這樣,請告訴我如何。
您應該可以通過標準API來完成此操作。
首先,您需要獲取要刪除的Message
(或消息)的引用 - 如果您成功讀取它們,則您已經能夠執行此操作。現在,有沒有明確的刪除()操作,但刪除了一樣,所以你可以標記一個消息:
message.setFlag(Flags.Flag.DELETED, true);
這將郵件標記爲已刪除(這通常是什麼樣刪除操作將在臺式機IMAP客戶端做)。爲了迫使已刪除的郵件予以刪除,當你與他們居住的Folder
(S)後,調用
folder.close(true);
其中真標誌指示服務器清除所有已刪除的郵件。
瞧!客戶端在使用任何IMAP客戶端連接到服務器時不應再看到這些消息。
編輯:
不要忘記READ_WRITE模式,否則該消息實際上不會從服務器上刪除,以打開該文件夾。
folder.open(Folder.READ_WRITE);
參見:http://java.sun.com/developer/onlineTraining/JavaMail/contents.html#JavaMailDeleting
然後給它的答案已使用標誌。 – Koekiebox 2010-11-09 09:17:09
方法名稱應該是[setFlag]不是[setFlags] [message.setFlag(Flags.Flag.DELETED,true);] – 2013-06-04 11:41:47
@MohammedSayed謝謝你,你是對的。我認爲這可能與最近版本中的API更改有關,但不是 - 近四年來這只是錯誤的! – 2013-06-04 14:01:33