Активация mailsystem.net: функция selectmailbox может зависнуть
Я пишу приложение, которое обрабатывает электронные письма пользователей. При запуске приложение подключается к Gmail, а затем раз в минуту проверяет наличие новых писем.
Примерно через 12-20 часов приложение перестает обрабатывать новые электронные письма. Используя журналы, которые я нашел, эта строка
Mailbox mailBox = _gmailClient.SelectMailbox("inbox");является последним исполняемым в этом коде.
Поскольку код не находится в блоке try / catch, я знаю, что это не сбой.
Пожалуйста, посоветуйте.
Спасибо.
Ниже приведена часть кода, которая извлекает новые электронные письма, где _gmailClient является Imap4Client() подключение к Gmail с помощью ConnectSsl("imap.gmail.com", 993)
OutputLog($"RetrieveAndProcessNewEmails - In locked code."); if (!_gmailClient.IsConnected) { OutputLog($"IMap client is not connected. Reconnecting..."); if (!(ConnectIMap4Client("imap.gmail.com", 993, true) && LoginIMap4Client("email", "pass"))) return; } OutputLog($"RetrieveAndProcessNewEmails - connected to GMail"); Mailbox mailBox = _gmailClient.SelectMailbox("inbox"); if (mailBox == null) { OutputLog("Mailbox is null! Processing incoming emails is disabled"); return; } OutputLog($"RetrieveAndProcessNewEmails - mailbox found: {MailBox2String(mailBox)}"); messages = mailBox.SearchParse("UNSEEN"); if (messages.Count == 0) { OutputLog($"Currently there is no new messages..."); return; } else OutputLog($"New {messages.Count} found.");
Что я уже пробовал:
Я уже задавал этот вопрос на GitHub, но ответа по-прежнему не было.
Richard Deeming
Если вы поддерживаете единственную связь в течение такого количества часов, возможно, это тайм-аут. Вы пробовали отключаться после каждого запуска?
Haifovchanin
Как я видел в лог-файле, соединение было разорвано, а затем мое приложение автоматически подключилось к Gmail. Примерно через 10 минут после того, как функция SelectMailbox зависла.
При повторном подключении я создаю новый экземпляр Imap4Client.
Кстати, время между повторным подключением и зависанием функции отличается от запуска к запуску.
Richard Deeming
Как я уже сказал, Я подозреваю, что было бы лучше открывать соединение, обрабатывать новые сообщения, а затем закрывать соединение каждый раз, а не пытаться держать соединение открытым в течение многих часов.
Haifovchanin
Понимать. Я постараюсь восстановить связь после каждого запроса.
Спасибо.
Haifovchanin
- Спасибо, Ричард. Вопрос решен.