gpt4 book ai didi

c# - 如何使用 MailKit 删除 Gmail 中的邮件(不移至垃圾箱文件夹)

转载 作者:行者123 更新时间:2023-11-30 13:31:17 26 4
gpt4 key购买 nike

我正在尝试使用 MailKit 库开发 ImapClient。

我怎样才能永久从 Gmail 帐户中删除邮件,而不是简单地将它们移到“垃圾箱”文件夹中?

最佳答案

在大多数 IMAP 服务器上,执行此操作的方式是:

folder.AddFlags (uids, MessageFlags.Deleted, true);

这会在消息上设置 \Deleted 标志。下一步将是:

folder.Expunge (uids);

这将从文件夹中清除消息。

假设这在 GMail 上不起作用,这可能是因为一旦您将 \Deleted 标志添加到 GMail IMAP 服务器上的邮件,它就会将其移动到垃圾箱文件夹(这是超出 IMAP 客户端的控制)。

这里有一个可能可行的想法......

// First, get the globally unique message id(s) for the message(s).
var summaries = folder.Fetch (uids, MessageSummaryItems.GMailMessageId);

// Next, mark them for deletion...
folder.AddFlags (uids, MessageFlags.Deleted, true);

// At this point, the messages have been moved to the Trash folder.
// So open the Trash folder...
folder = client.GetFolder (SpecialFolder.Trash);
folder.Open (FolderAccess.ReadWrite);

// Build a search query for the messages that we just deleted...
SearchQuery query = null;
foreach (var message in summaries) {
var id = SearchQuery.GMailMessageId (message.GMailMessageId);
query = query != null ? query.Or (id) : id;
}

// Search the Trash folder for these messages...
var matches = folder.Search (query);

// Not sure if you need to mark them for deletion again...
folder.AddFlags (matches, MessageFlags.Deleted, true);

// Now purge them from the Trash folder...
folder.Expunge (matches);

然后你就完成了...

关于c# - 如何使用 MailKit 删除 Gmail 中的邮件(不移至垃圾箱文件夹),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23237752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com