我有一個使用MailKit的方法,它將在郵箱中打開一個文件夾。如果acceslevel低於提供的參數,則它將關閉該文件夾,然後在右側的accesslevel中打開該文件夾。MailKit IMailFolder.Close拋出異常
事情是這樣的:
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'命令。
我可以得出結論是綁定做一個關閉操作(根據IMAP4是UNSELECT)的響應,給出壞反應,這應該是由沒有選擇郵箱引起的。
我該如何處理這個關閉操作,以便我可以關閉一個訪問級別較低的文件夾,並在正確的accesslevel中關閉一個文件夾?
我使用的版本是MailKit的v1.0.12.0,該版本是否包含您引用的問題? – grmihel
是的,該版本有我提到的修復。 UNSELECT規範表明,如果服務器以「BAD」響應,則表示該文件夾未打開。你有可能製作一個簡單的測試用例來說明這個bug嗎?試圖關閉它之前,文件夾的訪問級別是多少? – jstedfast
這似乎發生在連接超時後拋出'IMAP服務器意外斷開連接'。當我試圖關閉具有.IsOpen等於true的文件夾時,它似乎會拋出上面顯示的錯誤。 – grmihel