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

c#MailKit如何从邮件服务器(IMAP)中删除电子邮件,c#,mailkit,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.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);
                    ...
                }
}
使用(var client=new ImapClient())
{
client.Connect(serverM.Text,Convert.ToInt32(portM.Text),true);
client.authenticationMechaniss.Remove(“XOAUTH”);
client.Authenticate(user.Text、pass.Text);
var inbox=client.GetFolder(inbox.Text);
收件箱打开(FolderAccess.ReadWrite);
var message=inbox.GetMessage(i);
对于(inti=0;i

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

您在这里使用索引:

for (int i = 0; i < inbox.Count; i++) // 
{
    var message = inbox.GetMessage(i);
    ...
}
所以现在您不需要这样做:

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

您正在此处使用索引:

for (int i = 0; i < inbox.Count; i++) // 
{
    var message = inbox.GetMessage(i);
    ...
}
所以现在您不需要这样做:

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

嗯,它会删除未读的邮件,但我在标记为删除之前读到了“I”。如果您正在使用GMail,GMail会在您将邮件标记为\已删除后将其移出文件夹,所以这可能就是你看到的。我可能还应该指出,一次标记一条要删除的消息非常慢——一次标记一批消息要快得多。@jstedfast是否有其他方法可以获取
MimeMessage
的索引?我正在使用一个
foreach
循环遍历文件夹中的邮件,因此在这种情况下我没有索引。没有。您需要维护自己的索引偏移量。hmmm它会删除未读邮件,但我在标记为删除之前读到了“I”。如果您正在使用GMail,GMail会在您将邮件标记为\Deleted后将其移出文件夹,所以这可能就是你看到的。我可能还应该指出,一次标记一条要删除的消息非常慢——一次标记一批消息要快得多。@jstedfast是否有其他方法可以获取
MimeMessage
的索引?我正在使用一个
foreach
循环遍历文件夹中的邮件,因此在这种情况下我没有索引。没有。您需要维护自己的索引偏移量。