C# MimeKit:如何通过MessageId删除电子邮件?

C# MimeKit:如何通过MessageId删除电子邮件?,c#,mimekit,C#,Mimekit,我使用的是MailKit/MimeKit 1.2.7(最新的NuGet版本) 使用ImapClient删除电子邮件非常简单 client.Inbox.AddFlags(uniqueId, MessageFlags.Deleted, silent: true); 。。。如果你知道电子邮件的唯一ID或其索引 就我而言,我一个也不知道。我所拥有的只是消息本身(MimeMessage)及其MessageId 我希望MessageId==UniqueId,但显然不是这样 我是否有机会通过使用相应的mim

我使用的是MailKit/MimeKit 1.2.7(最新的NuGet版本)

使用ImapClient删除电子邮件非常简单

client.Inbox.AddFlags(uniqueId, MessageFlags.Deleted, silent: true);
。。。如果你知道电子邮件的唯一ID或其索引

就我而言,我一个也不知道。我所拥有的只是消息本身(MimeMessage)及其MessageId

我希望MessageId==UniqueId,但显然不是这样


我是否有机会通过使用相应的mimessage/MessageId来删除电子邮件?

您可以尝试这样做:

var uids = folder.Search (SearchQuery.HeaderContains ("Message-Id", message.MessageId));
folder.AddFlags (uids, MessageFlags.Deleted, silent: true);

不过,理想情况下,您应该跟踪用来获取消息的
唯一ID
,以便您可以使用该值。

太棒了!效果很好。非常感谢。什么是唯一的ID?我从哪里获得它?我可以在没有看到唯一ID的情况下检索消息,因此没有“跟踪”它。索引似乎是一件非常危险的事情,因为在我迭代文件夹时,消息可能会来来去去去。我只想删除邮件,如
message.delete()
文件夹。delete(message)
。UID可以从
文件夹中获取。Search()
查询或从
文件夹中获取()
,如果您请求
MessageSummaryItems.UniqueId
。这就是协议的工作原理。