2016-09-25 63 views
2

我使用imap從郵件服務器讀取郵件。我希望當我閱讀郵件時,郵件從郵件服務器中刪除。 我使用javaMail庫並將刪除標誌設置爲true,並且我看不到來自Web面板的消息,但是當我收到消息數時,消息的計數並沒有改變。 我的郵件服務器是Zimbra。如何使用javamail和imap永久刪除郵件

int count = inbox.getMessageCount();//for example count=100 
inbox[i].setFlag(Flags.Flag.DELETED, true); 
count = inbox.getMessageCount();// count=100 

回答

2

您需要將標記爲已刪除的郵件刪除後,實際上將其從文件夾中刪除。與此同時,他們只是坐在一個\Deleted標誌,大多數IMAP客戶端將隱藏它們。

呼叫清除(JavaDoc)應該像inbox.expunge()一樣簡單。這將導致您標記爲已刪除或可能在另一個會話中被標記爲已刪除的任何消息被刪除,並將重新編號現有消息序列號中的所有其他消息。

如果您的服務器支持UIDPLUS並且您需要更多控制,則IMAPFolder.expunge()支持刪除特定的DELETED消息列表。

0
if (inbox.isOpen()) {  
    Message[] messages = inbox.getMessages(); 
for (int i = 0; i < messages.length; i++) { 
    System.out.println(messages[i]); 
    messages[i].setFlag(Flags.Flag.DELETED, true); 
} 
if (inbox.isOpen()) { 
    inbox.expunge(); 
    } 
} 

感謝@Max

+0

稱謝某人的最好辦法就是投票並接受他們的答案。 – Max