2

为了在我们的应用程序中测试通知,我正在使用 JavaMail 验证这些通知。我测试了带有和不带有附件的通知。对于没有附件的电子邮件,第一个测试运行良好。验证后,我会删除该电子邮件并从应用程序中发送另一个带有附件的通知。现在我面临这个问题。因为我的收件箱有 1 封电子邮件,但有两个线程(第一封没有附件的电子邮件和最新的带有附件的电子邮件都有相同的主题,因此最终在同一封电子邮件中有两个线程)。我的代码会引发错误,因为它需要一封带有附件的电子邮件,但读取的是没有附件的电子邮件。这意味着之前的通知没有被正确删除?我是这样做的:

//If all messages are read, mark the latest read message as deleted
if(folder.getUnreadMessageCount() == 0){
    message.setFlag(Flags.Flag.DELETED, true);
}

//If any message is marked deleted, delete that message from folder
if(message.isSet(Flags.Flag.DELETED)){
    folder.expunge();
}

我还添加了以下内容以 100% 确保第一个通知被永久删除:

folder.close(true);

我错过了什么吗?或者有没有办法区分电子邮件中的线程?

4

2 回答 2

1

看起来您正确地删除了消息,但最好打开会话调试并查看协议跟踪以了解实际情况。有关说明,请参阅JavaMail 常见问题解答

于 2012-05-16T19:35:57.687 回答
0

试过这个,就像一个魅力。

//Get Trash folder to copy messages that are read 
Folder trash = store.getFolder("[Gmail]/Trash");
trash.open(folder.READ_WRITE);

//If all messages are read, delete the latest message 
if(folder.getUnreadMessageCount() == 0)
{
    folder.copyMessages(new Message[] {message}, trash);
}
于 2012-05-17T20:16:16.087 回答