2013-11-27 44 views
1

我正在使用JavaMail訪問Exchange郵箱(對於我工作的公司是私有的)。我的適用代碼如下:無法使用JavaMail刪除郵件

Store store = Session.getDefaultInstance(props, null).getStore("imap"); 
store.connect(...stuff...); 
Folder inbox = store.getFolder("INBOX"); 
inbox.open(Folder.READ_WRITE); 
int numOfMessages = inbox.getMessageCount(); 
for (int i = 1; i<=numOfMessages; i++){ 
    Message message = inbox.getMessage(i); 
    message.setFlag(Flags.Flag.DELETED, true); 
    System.out.println(message.getSubject()); 
} 
inbox.close(true); 
store.close(); 

它正在正確訪問和打印出所有消息名稱。但是,每次運行都會反覆打印相同的名稱,表明它們實際上並未被刪除。

分辨率我發現我是在inbox.close(true)之前拋出一個錯誤(在代碼中,我認爲不適用)。我並不把它作爲答案,因爲這不是一個真正的答案。

回答

1

嘗試在您的Message對象上調用saveChanges方法。 Javadoc here

+0

我得到一個「javax.mail.IllegalWriteException:IMAPMessage是隻讀的......」,在做了研究後,它看起來像saveChanges()不是與IMAP交互的方式 –

+0

對不起,我沒有看到這是imap。 Imap消息是read_only。 –

+0

啊,我知道我做錯了什麼。感謝您的幫助......這是我的代碼中的邏輯錯誤。 –