如何使用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: 'The folder is not currently open in read-write mode.'

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

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

我怎样才能做到这一点呢?

推荐答案

收件箱最初以只读模式打开.要删除邮件,您必须重新打开它,但这次是在读写模式下.所以,只要扔掉那if (!Inbox.IsOpen)美元,永远打开它就行了:

Inbox.Open(FolderAccess.ReadWrite);

Inbox.AddFlags(uid, MessageFlags.Deleted, true);
Inbox.Expunge();

Csharp相关问答推荐

在实际上是List T的 IESEARCH上多次调用First()是否不好?

Microsoft.AspNetCore.Mvc. Controller Base.用户:属性或索引器Controller Base.用户无法分配给--它是只读的

MongoDB实体框架核心:表达必须可写

CsWin32如何创建PWSTR的实例,例如GetWindowText

有没有办法把+02:00转换成TimeSpan?""

有没有一种方法可以在包含混合文本的标签中嵌入超链接?

使用特定格式的JsonConvert序列化对象

TDLib与机器人共享电话号码

碰撞检测与盒碰撞器,其isTrigger on问题

使用带有WithAppOnly()请求选项的pageIterator

如何在C#中转换泛型包装类内部的派生类

Savagger使用Fastendpoint更改用户界面参数

在Docker容器中运行API项目时,无法本地浏览到index.html

如何对特定异常使用Polly重试机制?

将字符串类型日期输入(yyyy-mm-ddthh:mm:ss)转换为MM/dd/yyyy格式

如何在绑定到数据库的datagridview中向上或向下移动行

如何在C#.NET桌面应用程序中动态更改焦点工具上的后退 colored颜色

WPF如何获取有关从一个视图模型更改另一个视图模型的信息

使DefaultIfEmpty返回空

如何对列表<;列表>;使用集合表达式?