2013-11-27 41 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

啊,我知道我做错了什么。感谢您的帮助......这是我的代码中的逻辑错误。 –