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 版本中存在错误,无法保持正确的文件夹打开状态,这可能就是您遇到的问题。
我有一个使用 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 版本中存在错误,无法保持正确的文件夹打开状态,这可能就是您遇到的问题。