查找MessagesArrived事件MailKit的新电子邮件

时间:2015-03-25 14:49:49

标签: c# mailkit

如何使用MailKit获取触发MessagesArrived事件的新电子邮件?

在我看到之后,我将发件人作为IMailFolder而e作为MessagesArrivedEventArgs。 我在e中看到的唯一一件事就是e.Count,它告诉我有多少新闻邮件已经到了。我想要的是已经到达的MimeMessage表单中的电子邮件。

1 个答案:

答案 0 :(得分:1)

您需要做的是存储e.Count值。完成当前命令后(client.Idle()?folder.Fetch()?等),您将要么:

  1. 致电folder.Fetch (folder.Count - count, -1, MessageSummaryItems.UniqueId)以获取添加到该文件夹​​的最新消息。

  2. 或致电folder.Search (SearchQuery.Recent),这只会提供您之前未曾查看过的消息。

  3. 获得UID后,您可以调用folder.GetMessage (uid);将消息作为MimeMessage(s)获取。

    注意:从技术上讲,每当IMAP服务器向客户端发送EXISTS事件时,就会发出MessagesArrived事件,其中文件夹中的消息数增加。由于e.Count值计算为NewMessageCount - OldMessageCount,因此可能会产生误导,因为您可能遇到如下情况:

    1. 打开文件夹,当前消息计数为10
    2. 将信息移出文件夹
    3. 在移动邮件时,您会收到2封新邮件
    4. 以1为计数发出MessagesArrived事件(10 - 1 + 2 = 11 ... 11 - 10 = 1)
    5. 实际上,最好先听一下ImapFolder.CountChanged事件并自己保管。