我正在使用MailKit (https://github.com/jstedfast/MailKit )通过imap连接到Google应用,如何删除单个消息?(将其移动到垃圾箱也可以,只需将其从收件箱中删除即可。)
到目前为止,我已经连接,下载并解析消息正文中的链接。我只需要这最后一个操作就可以得到我需要的东西。
谢谢!
到目前为止,我已经连接,下载并解析消息正文中的链接。我只需要这最后一个操作就可以得到我需要的东西。
谢谢!
要从IMAP服务器上的文件夹中删除邮件,您只需要执行以下操作:
client.Inbox.AddFlags (new int[] { index }, MessageFlags.Deleted);
或者client.Inbox.AddFlags (new UniqueId[] { uid }, MessageFlags.Deleted);
现在服务器上的消息被标记为 \Deleted。
您可以通过调用以下方法来清除已删除项目的文件夹:
client.Inbox.Expunge ();
如果你正在使用UID代替索引,并且IMAP服务器支持UIDPLUS扩展(检查client.Capabilities),那么你可以像这样仅清除选定的一组邮件:
if (client.Capabilities.HasFlag (ImapCapabilities.UidPlus))
client.Inbox.Expunge (new UniqueId[] { uid });
for (int index = 0; index < folder.Count; index++) ...
是一个索引。UID可以从 folder.Search()
查询或者如果您请求了 MessageSummaryItems.UniqueId
,也可以从 folder.Fetch()
中获取。 - jstedfastforeach
的无效问题。 - ygoevar uids = folder.Search(SearchQuery.All); foreach (var uid in uids) message = folder.GetMessage(uid);
- jstedfast