Как мне обрабатывать огромное количество писем с помощью Chilkat?
Я пытаюсь получить огромное количество писем (2500 и более) с IMAP-сервера. На самом деле я использую функцию imap.FetchHeaders(), но это не так быстро. Затем я попробовал imap.FetchSingleHeader(), но он намного медленнее, чем imap.FetchHeaders()...
Что ты посоветуешь??
2 ответа
Метод imap.FetchHeaders() отправит одну команду IMAP для получения заголовков. Сервер IMAP отправит все заголовки в одном ответе. Большая часть времени, необходимого для завершения всей операции, - это, вероятно, "время обдумывания" сервера IMAP, чтобы обработать запрос и отправить ответ. Если вы включите подробное ведение журнала (установите свойство imap.VerboseLogging = true), а затем изучите содержимое свойства imap.LastErrorText, вы должны увидеть информацию о времени в прошедших миллисекундах.
Таким образом, получение 2500 заголовков вряд ли возможно быстрее.
Одно замечание: чтобы избежать проблем, которые мы наблюдали при попытке получить огромное количество писем, Chilkat отправит максимум 1000 заголовков за один запрос. Это означает, что внутри метода FetchHeaders (для случая выборки 2500 заголовков) возникнут три отдельные пары запрос / ответ.
Спасибо, Говард, это ответ на ваш вопрос в комментарии выше о GetMailboxStatus.
Метод GetMailboxStatus отправляет команду STATUS с запросом следующих элементов: (СООБЩЕНИЯ НЕДАВНИЕ UIDNEXT UIDVALIDITY UNSEEN)
Учитывая, что он является частью стандарта протокола IMAP ( https://tools.ietf.org/html/rfc3501), он должен быть действителен для всех серверов. (Я не припомню, чтобы когда-либо задавал вопрос в службу поддержки, когда GetMailboxStatus работал некорректно.)