找到 MessagesArrived 事件 MailKit 的新邮件
Find the new email of MessagesArrived event MailKit
如何使用 MailKit 获取触发 MessagesArrived 事件的新电子邮件?
在我看到之后,我得到了一个作为 IMailFolder 的发件人和一个作为 MessagesArrivedEventArgs 的 e。
我在 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。
注意:从技术上讲,只要 IMAP 服务器向客户端发送一个 EXISTS 事件,其中文件夹中的邮件数量 增加了 ,就会发出 MessagesArrived 事件。由于 e.Count 值计算为 NewMessageCount - OldMessageCount
,它实际上可能会产生误导,因为您可能会遇到以下情况:
- 打开文件夹,当前邮件数为 10
- 将邮件移出文件夹
- 在移动消息时,您收到 2 条新消息
- MessagesArrived 事件发出,计数为 1 (10 - 1 + 2 = 11... 11 - 10 = 1)
实际上最好是听取 ImapFolder.CountChanged 事件并自己记账。
如何使用 MailKit 获取触发 MessagesArrived 事件的新电子邮件?
在我看到之后,我得到了一个作为 IMailFolder 的发件人和一个作为 MessagesArrivedEventArgs 的 e。 我在 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。
注意:从技术上讲,只要 IMAP 服务器向客户端发送一个 EXISTS 事件,其中文件夹中的邮件数量 增加了 ,就会发出 MessagesArrived 事件。由于 e.Count 值计算为 NewMessageCount - OldMessageCount
,它实际上可能会产生误导,因为您可能会遇到以下情况:
- 打开文件夹,当前邮件数为 10
- 将邮件移出文件夹
- 在移动消息时,您收到 2 条新消息
- MessagesArrived 事件发出,计数为 1 (10 - 1 + 2 = 11... 11 - 10 = 1)
实际上最好是听取 ImapFolder.CountChanged 事件并自己记账。