【问题标题】:MimeKit: How to delete an email by MessageId?MimeKit:如何通过 MessageId 删除电子邮件?
【发布时间】:2015-07-15 09:00:18
【问题描述】:

我正在使用 MailKit/MimeKit 1.2.7(最新的 NuGet 版本)。

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

client.Inbox.AddFlags(uniqueId, MessageFlags.Deleted, silent: true);

...如果您知道电子邮件 UniqueId 或其索引。

就我而言,我不知道其中之一。我所拥有的只是消息本身 (MimeMessage) 和它的 MessageId。

我希望 MessageId == UniqueId,但显然情况并非如此。

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

【问题讨论】:

    标签: c# mimekit


    【解决方案1】:

    你可以尝试做这样的事情:

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

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

    【讨论】:

    • 太棒了!效果很好。非常感谢。
    • 什么是唯一 ID,我从哪里获得它?我可以在没有看到唯一 ID 的情况下检索消息,因此没有“跟踪”它。索引似乎是一件非常危险的事情,因为在我迭代文件夹时消息可能会来来去去。我只想删除一条消息,例如 message.Delete()folder.Delete(message)
    • UID 可以从 folder.Search() 查询中获取,如果您请求 MessageSummaryItems.UniqueId,则可以从 folder.Fetch() 获取。这就是协议的工作原理。
    猜你喜欢
    • 2021-08-27
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 2022-10-25
    • 2022-12-21
    • 1970-01-01
    相关资源
    最近更新 更多