У меня есть метод с использованием MailKit, который откроет папку в вашем почтовом ящике. Если уровень доступа ниже, чем предоставленный аргумент, он закроет папку, а затем откроет папку в правом уровне доступа.MailKit IMailFolder.Close throws exception
Что-то вроде этого:
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».
Что я могу сделать вывод, что ответ от завязывания сделать ЗАКРЫТЬ операцию (которая, согласно протоколу IMAP4 UNSELECT), дают BAD ответ, который должен быть вызван не почтовый ящик выбранного.
Как я могу справиться с этой закрытой операцией, чтобы я мог закрыть папку с более низким уровнем доступа и открыть ее закрытие на правильном уровне доступа ???
Версия, которую я использую, является v1.0.12.0 MailKit, содержит ли эта версия проблему, на которую вы ссылаетесь? – grmihel
Да, эта версия имеет исправление, о котором я упомянул. Спецификации UNSELECT показывают, что если сервер отвечает «BAD», это означает, что папка не была открыта. Есть ли вероятность, что вы можете создать простой тестовый пример, который иллюстрирует эту ошибку для меня? Каков уровень доступа к папке, прежде чем пытаться закрыть его? – jstedfast
Кажется, что происходит после того, как соединение имеет тайм-аут и выбрасывает «IMAP-сервер неожиданно отключен». Когда я пытаюсь закрыть папку, у которой есть .IsOpen равно true, тогда, похоже, она выдает ошибку, указанную выше. – grmihel