0

我有一种使用 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:IMAP 服务器以“BAD”响应回复“UNSELECT”命令。

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

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

4

1 回答 1

1

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

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

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

于 2015-04-08T13:15:56.157 回答