c# MailKit 如何从邮件服务器 (IMAP) 中删除电子邮件

标签 c# mailkit

我发现了这个:

client.Inbox.AddFlags (new int[] { index }, MessageFlags.Deleted);
or
client.Inbox.AddFlags (new UniqueId[] { uid }, MessageFlags.Deleted);

then
client.Inbox.Expunge ();

我不知道如何获取此处使用的索引或uid。我的客户是这样工作的:

using (var client = new ImapClient())
{
                client.Connect(serverM.Text, Convert.ToInt32(portM.Text), true);
                client.AuthenticationMechanisms.Remove("XOAUTH");
                client.Authenticate(user.Text, pass.Text);
                var inbox =  client.GetFolder(inbox.Text);
                inbox.Open(FolderAccess.ReadWrite);
                var message = inbox.GetMessage(i);
                for (int i = 0; i < inbox.Count; i++) // 
                {
                    var message = inbox.GetMessage(i);
                    ...
                }
}

另外 int I 不是索引。 message.MessageID 不等于 UID。我的错误在哪里?

最佳答案

你在这里使用索引:

for (int i = 0; i < inbox.Count; i++) // 
{
    var message = inbox.GetMessage(i);
    ...
}

i 是索引。

在最新版本的 MailKit 中,我添加了以下功能:

inbox.AddFlags (i, MessageFlags.Deleted);

所以现在你不需要这样做了:

inbox.AddFlags (new int[] { i }, MessageFlags.Deleted);

关于c# MailKit 如何从邮件服务器 (IMAP) 中删除电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24724198/

相关文章:

email - Mailkit 不使用凭据进行身份验证

asp.net-core - MailKit.Security.SslHandshakeException : The host name did not match the name given in the server's SSL certificate. asp.net 核心 5,nginx

c# - 字节数组子串

c# - CaSTLe Windsor - 事件处理程序的注册组件

c# - 哈希字符串以进行重复检测

c# - 使用 MailKit 的单个 SMTP 事务向多个收件人发送电子邮件

Outlook SMTP Oauth 发送 - 身份验证失败

c# - 在这个文件上传功能中如何检查文件是否存在?

javascript - 使用 aspnet mvc 将 Js 语法转换为 C#

centos - MailKit 使用 LetsEncrypt SSL 证书获取 SslHandshakeException