我正在使用IMAP协议从服务器接收电子邮件,如here所述。 这工作得很好,我可以将电子邮件和附件存储在磁盘上。使用javax.mail删除服务器上的电子邮件
问题: 我必须从服务器中删除文件的可能性,让他们不再可用,当一个客户端尝试接收所有电子邮件?如果是这样,请告诉我如何。
我正在使用IMAP协议从服务器接收电子邮件,如here所述。 这工作得很好,我可以将电子邮件和附件存储在磁盘上。使用javax.mail删除服务器上的电子邮件
问题: 我必须从服务器中删除文件的可能性,让他们不再可用,当一个客户端尝试接收所有电子邮件?如果是这样,请告诉我如何。
您应该可以通过标准API来完成此操作。
首先,您需要获取要删除的Message
(或消息)的引用 - 如果您成功读取它们,则您已经能够执行此操作。现在,有没有明确的删除()操作,但删除了一样,所以你可以标记一个消息:
message.setFlag(Flags.Flag.DELETED, true);
这将邮件标记为已删除(这通常是什么样删除操作将在台式机IMAP客户端做)。为了迫使已删除的邮件予以删除,当你与他们居住的Folder
(S)后,调用
folder.close(true);
其中真标志指示服务器清除所有已删除的邮件。
瞧!客户端在使用任何IMAP客户端连接到服务器时不应再看到这些消息。
编辑:
不要忘记READ_WRITE模式,否则该消息实际上不会从服务器上删除,以打开该文件夹。
folder.open(Folder.READ_WRITE);
参见:http://java.sun.com/developer/onlineTraining/JavaMail/contents.html#JavaMailDeleting
然后给它的答案已使用标志。 – Koekiebox 2010-11-09 09:17:09
方法名称应该是[setFlag]不是[setFlags] [message.setFlag(Flags.Flag.DELETED,true);] – 2013-06-04 11:41:47
@MohammedSayed谢谢你,你是对的。我认为这可能与最近版本中的API更改有关,但不是 - 近四年来这只是错误的! – 2013-06-04 14:01:33