如何使用MailKit获取触发MessagesArrived事件的新电子邮件?
在我看到之后,我将发件人作为IMailFolder而e作为MessagesArrivedEventArgs。 我在e中看到的唯一一件事就是e.Count,它告诉我有多少新闻邮件已经到了。我想要的是已经到达的MimeMessage表单中的电子邮件。
答案 0 :(得分:1)
您需要做的是存储e.Count值。完成当前命令后(client.Idle()?folder.Fetch()?等),您将要么:
致电folder.Fetch (folder.Count - count, -1, MessageSummaryItems.UniqueId)
以获取添加到该文件夹的最新消息。
或致电folder.Search (SearchQuery.Recent)
,这只会提供您之前未曾查看过的新消息。
获得UID后,您可以调用folder.GetMessage (uid);
将消息作为MimeMessage(s)获取。
注意:从技术上讲,每当IMAP服务器向客户端发送EXISTS事件时,就会发出MessagesArrived事件,其中文件夹中的消息数增加。由于e.Count值计算为NewMessageCount - OldMessageCount
,因此可能会产生误导,因为您可能遇到如下情况:
实际上,最好先听一下ImapFolder.CountChanged事件并自己保管。