【问题标题】:how to remove permanently message with javamail and imap如何使用 javamail 和 imap 永久删除邮件
【发布时间】:2017-02-02 21:43:41
【问题描述】:

我使用 imap 从邮件服务器读取消息。我想当我阅读邮件时,邮件从邮件服务器中删除。 我使用 javaMail 库并将删除标志设置为 true,我看不到来自 Web 面板的消息,但是当我获得消息计数时,消息计数没有改变。 我的邮件服务器是 Zimbra。

int count = inbox.getMessageCount();//for example count=100
inbox[i].setFlag(Flags.Flag.DELETED, true);
count = inbox.getMessageCount();// count=100

【问题讨论】:

    标签: java imap zimbra


    【解决方案1】:

    您需要在将邮件标记为已删除后将其删除,才能真正将其从文件夹中删除。与此同时,他们只是拿着\Deleted 标志坐在那里,大多数IMAP 客户端都会隐藏它们。

    调用 expunge (JavaDoc) 应该像 inbox.expunge() 一样简单。这将导致您已标记为已删除或可能在另一个会话中标记为已删除的任何消息被删除,并将重新编号所有其他消息中的现有消息序列号。

    如果您的服务器支持 UIDPLUS 并且您需要更多控制权,IMAPFolder.expunge() 支持删除特定的已删除消息列表。

    【讨论】:

      【解决方案2】:
      if (inbox.isOpen()) {    
          Message[] messages = inbox.getMessages();
      for (int i = 0; i < messages.length; i++) {
          System.out.println( messages[i]);
           messages[i].setFlag(Flags.Flag.DELETED, true);
       }
      if (inbox.isOpen()) {
          inbox.expunge();
        }
      }
      

      感谢@Max

      【讨论】:

      • 感谢某人的最佳方式是投票并接受他们的回答。
      猜你喜欢
      • 2017-11-13
      • 2011-10-29
      • 2012-11-25
      • 1970-01-01
      • 2019-06-23
      • 2019-08-26
      • 2013-08-09
      • 1970-01-01
      • 2011-08-18
      相关资源
      最近更新 更多