如何使用 MailKit 获取触发 MessagesArrived 事件的新电子邮件?
在我看到之后,我得到了一个发件人作为 IMailFolder 和 e 作为 MessagesArrivedEventArgs。我在 e 中看到的唯一内容是 e.Count,它告诉我假设有多少新闻邮件已经到达。我想要的是已经到达的 MimeMessage 形式的电子邮件。
您需要做的是存储 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 事件并自己记账。