我正在使用MailKit运行以下问题。我的电子邮件客户端应用程序处于空闲状态(收件箱)。我在收件箱中添加了一封来自Outlook的新电子邮件,我在我的客户端(MailKit)中收到了CountChanged事件。在CountChanged事件内我执行
remoteFolder.Fetch(messagesCount, -1, MessageSummaryItems.All | MessageSummaryItems.UniqueId);
//where messagesCount == 467
我在这一行有一个断点,当我在断点时,我正在切换到Outlook并从收件箱中删除随机电子邮件。
之后我正在运行上面的那一行。我希望Fetch会立即返回1封电子邮件和MessageExpunge事件,但会发生的是Fetch返回2封电子邮件 - 使用UID 468和464.具有UID 464的邮件没有设置Envelope属性。我想知道这是不是MailKit Fetch函数应该如何工作?我应该使用过滤Fetch命令的结果集 .Where(mailMessage.Index> messagesCount)只获取新消息?
以下是服务器日志
C: A00000045 IDLE
S: + idling
S: * 468 EXISTS
C: DONE
S: A00000045 OK Idle completed (24.713 + 24.713 + 24.712 secs).
C: A00000046 FETCH 468:* (UID FLAGS INTERNALDATE RFC822.SIZE ENVELOPE)
S: * 468 FETCH (UID 20873 FLAGS (\Flagged \Seen) INTERNALDATE "25-Aug-2017 16:58:02 +0300" RFC822.SIZE 9648 ENVELOPE ("Fri, 25 Aug 2017 16:57:08 +0300" "Reset Your Zeplin Password" (("Zeplin" NIL "no-reply" "zeplin.io")) (("Zeplin" NIL "no-reply" "zeplin.io")) (("Zeplin" NIL "no-reply" "zeplin.io")) ((NIL NIL "emil.kalchev" "mobisystems.com")) NIL NIL NIL "<30339184.20170825135708.59a02cb4bee526.36618240@mail179-24.suw41.mandrillapp.com>"))
S: * 464 FETCH (MODSEQ (19343) FLAGS (\Flagged \Deleted \Seen))
S: A00000046 OK Fetch completed (0.001 + 0.000 secs).
C: A00000047 IDLE
S: + idling
S: * 464 EXPUNGE
我对https://tools.ietf.org/html/rfc3501#page-73进行了研究,实际上,通过规范,imap服务器可以返回&#34;单边服务器决策(例如, 国旗更新)&#34;在FETCH响应中。
但是我想知道为什么Mailkit没有为UID 464引发MessageFlagChanged事件