Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javax.mail删除服务器上的电子邮件_Java_Email_Imap - Fatal编程技术网

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

使用javax.mail删除服务器上的电子邮件,java,email,imap,Java,Email,Imap,我正在使用IMAP协议接收来自服务器的电子邮件,就像上面描述的那样。 这是非常好的工作,我可以存储在磁盘上的电子邮件和附件 问题: 当客户端尝试接收所有电子邮件时,我是否可以从服务器删除文件,使其不再可用?如果是这样,请告诉我如何操作。您应该能够通过标准API执行此操作 首先,您需要获取要删除的消息(或多条消息)的引用-如果您正在成功地阅读它们,那么您已经能够执行此操作。现在,没有显式的delete()操作,但您可以将邮件标记为已删除,如下所示: message.setFlag(Flags.Fl

我正在使用IMAP协议接收来自服务器的电子邮件,就像上面描述的那样。 这是非常好的工作,我可以存储在磁盘上的电子邮件和附件

问题
当客户端尝试接收所有电子邮件时,我是否可以从服务器删除文件,使其不再可用?如果是这样,请告诉我如何操作。

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

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

message.setFlag(Flags.Flag.DELETED, true);
这会将消息标记为已删除(这通常是桌面IMAP客户端中的删除操作所做的操作)。要强制删除已删除的邮件,当您处理完邮件所在的
文件夹时,请调用

folder.close(true);
其中,true标志指示服务器删除所有已删除的邮件

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

编辑:

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

folder.open(Folder.READ_WRITE);

请参阅:

然后给它答案used flag.method name应该是[setFlag]而不是[setFlags][message.setFlag(Flags.flag.DELETED,true);]@MohammedSayed谢谢,你说得对。我原以为这可能是因为最近版本中的API更改,但不是这样的——这只是近四年来的错误!