メールボックス内のフォルダーを開く 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 サーバーが「UNSELECT」コマンドに「BAD」応答で応答しました。
私が結論付けることができるのは、CLOSE 操作 (IMAP4 によると UNSELECT) を実行するための結合からの応答は、メールボックスが選択されていないことが原因であるはずの BAD 応答を与えるということです。
この閉じる操作をどのように処理すれば、アクセス レベルの低いフォルダーを閉じて、正しいアクセス レベルで閉じた後に開くことができますか?