IMAP rebex Время ожидания соединения с клиентом

У меня есть список уникальных ключей невидимых электронных писем, и моя текущая логика состоит в том, чтобы обрабатывать его в одном сеансе / соединении. Однако иногда сервер [rebex] вылетает и выдает ошибку *

Rebex.Net.ImapException: сервер закрыл соединение.

в нижней точке.

  • client.GetMailMessage (unique_key); // получить информацию о конкретном письме из уникального ключа

Здесь он будет отмечать определенный статус электронной почты, хотя он генерирует ошибку. Таким образом, в следующий раз, если я попытаюсь получить информацию о невидимых электронных письмах, этот конкретный электронный ключ будет пропущен.

Здесь я исследовал несколько возможных способов

  1. Чтобы отметить эту ошибку, электронная почта невидима.
  2. Снова создайте соединение для этого конкретного электронного письма и получите информацию из этого.
  3. Сделайте IMAP-клиент синглтоном и, когда он выйдет из строя, создайте новый.

Есть ли более оптимизированные решения? Спасибо

2 ответа

Вы можете предотвратить GetMailMessage от маркировки электронной почты, как видно с помощью Imap объекты Settings.UsePeekForGetMessage опция:

var imap = new Imap();
imap.Settings.UsePeekForGetMessage = true;
...

Как только вы решите пометить письмо как увиденное, используйте SetMessageFlags метод:

imap.SetMessageFlags(unique_key, ImapFlagAction.Add, ImapMessageFlags.Seen);

Классический ответ - пометить сообщения как обработанные после обработки, а не до.

Что может привести к проблемам, если обработка определенного сообщения приводит к сбою. Человек не хочет восстанавливать связь и сразу же сталкивается с той же проблемой. Так что, возможно, ведите учет того, когда вы в последний раз пытались, и пробуйте сообщения, которые были самыми старыми.

Другие вопросы по тегам