Skip to main content
 首页 » 编程设计

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

2024年02月06日32lonelyxmas

我发现了这个:

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);