【问题标题】:Ae.Net.Mail - IMAP - Get only unseen messagesAe.Net.Mail - IMAP - 只获取看不见的消息
【发布时间】:2014-09-02 05:04:00
【问题描述】:

我有一个使用带有 G-mail 的 AE.Net.Mail IMAP 客户端的 Windows 服务。该服务每 x 分钟运行一次,检索收件箱消息,应用一些业务逻辑,并将它们标记为已删除。这一切都有效。

但是,Gmail 将它们留在收件箱中,以便后续调用再次获取它们。我可以通过查看 Seen 或 Deleted 标志来跳过它们,但我宁愿根本不得到它们。除非有人经常进入并清理收件箱,否则获取的数据将呈指数级增长。

我尝试过使用 Gmail 删除选项,但它们似乎没有任何效果。

【问题讨论】:

  • 我认为电子邮件也有唯一的 ID。您可以尝试保存 ID,然后只获取没有 ID 的电子邮件......这不是一个真正优雅的解决方案。顺便说一句,ImapClient class 中有一个 DeleteMessage 方法
  • 谢谢。是的,DeleteMessage 方法成功地将 Deleted 标志添加到消息中。 Gmail 不会删除它。它作为已读邮件保留在收件箱中。

标签: c# asp.net gmail-imap


【解决方案1】:

我知道这是一个有点旧的帖子,但以防万一有人正在寻找一种方法来做到这一点,可以试试:

ImapClient ic = new ImapClient("imap.gmail.com", "name@gmail.com", "pass", AuthMethods.Login, 993, true);
var mailMessage = ic.SearchMessages(SearchCondition.Unseen(), false, true).ToList();

现在您可以循环查看未读邮件的 mailMessage。

【讨论】:

    【解决方案2】:

    我决定在检索它们时将它们过滤掉。不理想,但它有效

     List<AE.Net.Mail.MailMessage> mm = _client.GetMessages(0, 10, false, false)
                                                .Where(m => !m.Flags.HasFlag(Flags.Seen) 
                                                       && !m.Flags.HasFlag(Flags.Deleted)).ToList();
    

    【讨论】:

      【解决方案3】:

      我知道这是一个有点旧的帖子,但以防万一有人正在寻找一种方法来做到这一点,可以尝试移动:

      AE.Net.Mail.Imap.Mailbox[] mailBoxes = client.ListMailboxes(string.Empty, "*");
                              bool existeMailBoxArquivo = false; 
      const string ARQUIVO = "ARQUIVO";
      
                              foreach (var mailBox in mailBoxes)
                              {
                                  if (mailBox.Name == ARQUIVO)
                                      existeMailBoxArquivo = true;
                              }
                              if (!existeMailBoxArquivo)
                                  client.CreateMailbox(ARQUIVO);
                              client.MoveMessage(msg.Uid, ARQUIVO);
      

      所以你将邮件移动到一个文件夹,当你再次浏览时,只需选择主框进行搜索

      【讨论】:

        猜你喜欢
        • 2023-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多