【问题标题】:How to filter emails with Imap from a specific sender in C#?如何在 C# 中使用 Imap 过滤来自特定发件人的电子邮件?
【发布时间】:2020-08-25 09:22:04
【问题描述】:

而不是得到数字 1 - 因为只有一个发件人使用指定的电子邮件向我的收件箱发送了一封电子邮件,所以我得到了数字 19。

using(ImapClient client = new ImapClient())
            {
                client.Connect("imap.gmail.com", 993, SecureSocketOptions.SslOnConnect);
                client.Authenticate("a.t@gmail.com", "pass");
                var inbox = client.Inbox;
                inbox.Open(FolderAccess.ReadOnly);
                var count = inbox.Search(SearchQuery.CcContains("b.c@gmail.com"));

                Console.WriteLine(count);
            }

【问题讨论】:

  • Search 返回匹配的邮件 UID 列表...请参阅 mimekit.net/docs/html/M_MailKit_IMailFolder_Search_2.htm,因此您可能需要检查 count 实际上是什么类型。我猜“19”是邮件的 UID。
  • @Fildor 是的,我已经阅读了一段时间的文档,但我无法找到如何通过发件人电子邮件进行过滤。
  • 据我所知,你会过滤。你只是没有回来,你认为你得到了什么。仅仅因为该邮件是该收件箱中的第一封也是唯一一封邮件,并不意味着它的 UID 必须为“1”。
  • @Fildor 我只需要在最后附加 .Count .. 第一次使用 Imap,我只是在阅读文档并尝试逐步完成我被赋予的任务.. .
  • @Fildor 我很感激!谢谢你帮助我。

标签: c# imap mimekit


【解决方案1】:

正如@Fildor 在评论中提到的那样,Search() 返回唯一 ID 列表。因此尝试

var count = inbox.Search(SearchQuery.CcContains("b.c@gmail.com")).Count;

【讨论】:

  • 是的,你是对的,我只需要附加 .Count - 它符合我的要求。您能解释一下我们过滤时 UID 的用途吗?并感谢您的回答。 :)
  • 正如@Fildor 提到的,这是 MimeKit 的 API 指定的 (mimekit.net/docs/html/M_MailKit_IMailFolder_Search_2.htm)。它返回一个 UID 列表,因为这就是 Mail-Library 的开发者的意图。当您查看页面时,您可以看到您可以使用 UID 来获取电子邮件的消息以及其他内容
猜你喜欢
  • 2021-01-18
  • 2015-06-09
  • 1970-01-01
  • 2021-11-04
  • 2014-10-15
  • 2010-11-19
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
相关资源
最近更新 更多