【问题标题】:Delete Email on Server using javax.mail使用 javax.mail 删除服务器上的电子邮件
【发布时间】:2010-11-30 16:26:48
【问题描述】:

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

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

【问题讨论】:

    标签: java email imap


    【解决方案1】:

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

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

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

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

    folder.close(true);
    

    其中 true 标志指示服务器删除所有已删除的消息。

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

    编辑:

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

    folder.open(Folder.READ_WRITE);
    

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

    【讨论】:

    • 然后给它使用标志的答案。
    • 方法名应该是 [setFlag] 而不是 [setFlags] [message.setFlag(Flags.Flag.DELETED, true);]
    • @MohammedSayed 谢谢,你是对的。我认为这可能是由于最近版本中的 API 发生了变化,但不——这已经错了将近四年!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2014-12-20
    • 1970-01-01
    • 2014-09-03
    • 2013-11-13
    • 2012-04-04
    • 1970-01-01
    相关资源
    最近更新 更多