MailKit IMailFolder.Close 抛出异常

MailKit IMailFolder.Close throws exception

我有一个使用 MailKit 的方法可以在您的邮箱中打开一个文件夹。如果访问级别低于提供的参数,那么它将关闭文件夹,然后以正确的访问级别打开文件夹。

像这样:

public void OpenFolder(IMailFolder folder, FolderAccess level)
{
    if(folder.IsOpen() && folder.FolderAccess < level)
    {
        //Closed folder
        using(var task = folder.CloseAsync())
        {
            task.Wait();
        }
        //Open folder with correct accesslevel
        folder.Open(level);
    }
}

task.Wait() 部分抛出一个 AggregateException(它似乎有一个 ImapCommandException 类型的内部异常),告诉我:

MailKit.Net.Imap.ImapCommandException: The IMAP server replied to the 'UNSELECT' command with a 'BAD' response.

我可以得出的结论是,绑定执行 CLOSE 操作(根据 IMAP4 为 UNSELECT)的响应给出了 BAD 响应,这应该是没有选择邮箱造成的。

如何处理这个关闭操作,以便我可以关闭访问级别较低的文件夹,并在关闭后以正确的访问级别打开它???

首先,我应该指出,在打开另一个文件夹甚至具有不同访问级别的同一文件夹之前,无需关闭文件夹。之前打开的文件夹将始终由服务器自动为您关闭。

我应该更新文档以提及这一点,因为似乎很多人似乎认为他们需要关闭文件夹。

无论如何,我不确定这是怎么发生的。您使用的是什么版本的 MailKit?某些较旧的 MailKit 版本中存在错误,无法保持正确的文件夹打开状态,这可能就是您遇到的问题。