使用 javax.mail 删除服务器上的电子邮件

2022-09-01 01:58:36

我正在使用IMAP协议从服务器接收电子邮件,就像这里描述的那样。这工作得很好,我可以将电子邮件和附件存储在磁盘上。

:当客户端尝试接收所有电子邮件时,我是否有可能从服务器中删除文件,以便它们不再可用?如果是这样,请告诉我如何。


答案 1

您应该能够通过标准 API 执行此操作。

首先,您需要获取对要删除的(或消息)的引用 - 如果您成功阅读它们,那么您已经能够执行此操作。现在,没有显式的 delete() 操作,但您可以将消息标记为已删除,如下所示:Message

message.setFlag(Flags.Flag.DELETED, true);

这会将邮件标记为已删除(这通常是删除操作在桌面 IMAP 客户端中执行的操作)。为了强制清除已删除的邮件,当您完成它们所在的(s)时,请调用Folder

folder.close(true);

其中,true 标志指示服务器清除所有已删除的邮件。

瞧!当客户端使用任何 IMAP 客户端连接到服务器时,他应该不再看到这些消息。

编辑:

不要忘记以READ_WRITE模式打开文件夹,否则邮件实际上不会从服务器中删除。

folder.open(Folder.READ_WRITE);

请参见: http://java.sun.com/developer/onlineTraining/JavaMail/contents.html#JavaMailDeleting


答案 2

推荐