Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找MessagesRived event MailKit的新电子邮件_C#_Mailkit - Fatal编程技术网

C# 查找MessagesRived event MailKit的新电子邮件

C# 查找MessagesRived event MailKit的新电子邮件,c#,mailkit,C#,Mailkit,如何使用MailKit获取触发MessagesRived事件的新电子邮件 在我看到之后,我得到了一个发送者作为IMailFolder和e作为MessagesArrivedEventArgs。 我在e.Count中看到的唯一一件事就是e.Count,它告诉我我估计已经收到了多少封新闻邮件。我想要的是收到的MIMessage格式的电子邮件。您需要做的是存储e.Count值。完成当前命令(client.Idle()?folder.Fetch()?等)后,您将需要: 调用folder.Fetch(fol

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

在我看到之后,我得到了一个发送者作为IMailFolder和e作为MessagesArrivedEventArgs。
我在e.Count中看到的唯一一件事就是e.Count,它告诉我我估计已经收到了多少封新闻邮件。我想要的是收到的MIMessage格式的电子邮件。

您需要做的是存储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事件(其中文件夹中的消息数量增加)时,就会发出MessagesRived事件。由于e.Count值的计算方式为
    NewMessageCount-oldsessagecount
    ,因此它实际上可能具有误导性,因为您可能遇到以下情况:

  • 打开文件夹,当前邮件计数为10
  • 将邮件移出文件夹
  • 移动邮件时,您会收到2条新邮件
  • MessagesRived事件以计数1发出(10-1+2=11…11-10=1)
  • 实际上,最好是听ImapFolder.CountChanged事件,然后自己记账。

    要记住的一点(我在本期中一直在努力解决这个问题)是,收件箱。Count可能包含标记为已删除的邮件,如果您无缝地将Inbox.Count()用作计数更改跟踪程序,可能会给您错误的计数。