如何使用 MailKit 删除电子邮件?

问题描述 投票:0回答:1

如何使用 MailKit 版本 4.3.0 删除电子邮件?

这是我使用的代码:

...
//Ensure that the inbox folder is open
if (!Inbox.IsOpen)
{
    //Here never enters
    Inbox.Open(FolderAccess.ReadWrite);
}

//Delete message from inbox
try
{
    //Here is where I get the exception
    Inbox.AddFlags(uid, MessageFlags.Deleted, true);
    Inbox.Expunge();
}
catch (Exception ex)
{
    //Console.WriteLine($"Error al intentar borrar el correo con UID {uid}: {ex.Message}");
}
finally
{
    //Close inbox folder after deleting message
    if (Inbox.IsOpen)
    {
        Inbox.Close();
    }
}
...

当我调试代码时,它抛出了下一个异常: MailKit.FolderNotOpenException:“该文件夹当前未在读写模式下打开。”

我向 ChatGPT 询问了该异常,并告诉我可以使用以下代码以读写模式打开,但 Visual Studio 说属性 IsWritable 不存在:

if (!Inbox.IsOpen || !Inbox.IsWritable)
{
    Inbox.Open(FolderAccess.ReadWrite);
}

我怎样才能实现这个目标?

c# mailkit
1个回答
2
投票

收件箱最初以只读模式打开。为了删除消息,您必须再次重新打开它,但这次是在读写模式下。所以,只要摆脱那个

if (!Inbox.IsOpen)
并始终打开它:

Inbox.Open(FolderAccess.ReadWrite);

Inbox.AddFlags(uid, MessageFlags.Deleted, true);
Inbox.Expunge();
© www.soinside.com 2019 - 2024. All rights reserved.