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)
之前抛出一个错误(在代码中,我认为不适用)。我并不把它作为答案,因为这不是一个真正的答案。
我得到一个“javax.mail.IllegalWriteException:IMAPMessage是只读的......”,在做了研究后,它看起来像saveChanges()不是与IMAP交互的方式 –
对不起,我没有看到这是imap。 Imap消息是read_only。 –
啊,我知道我做错了什么。感谢您的帮助......这是我的代码中的逻辑错误。 –