Как мне обрабатывать огромное количество писем с помощью Chilkat? - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь получить огромное количество писем (2500 и более) с IMAP-сервера. На самом деле я использую функцию imap.FetchHeaders () , но это НЕ ТАК быстро. Затем я попробовал imap.FetchSingleHeader () , но это намного медленнее, чем imap.FetchHeaders () ...

Что бы вы порекомендовали ??

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Спасибо, Говард. Это ответ на ваш вопрос в комментарии выше о GetMailboxStatus.

Метод GetMailboxStatus отправляет команду STATUS, запрашивая следующие элементы: (СООБЩЕНИЯ ПОСЛЕДНЕЕ UIDNEXT UIDVALIDITY UNSEEN)

Учитывая, что он является частью стандарта протокола IMAP (на https://tools.ietf.org/html/rfc3501#section-6.3.10),оно должно быть действительным для всех серверов. (Я не помню, чтобы когда-либо задавал вопрос поддержки, где GetMailboxStatus не работал правильно.)

1 голос
/ 15 октября 2019

Метод imap.FetchHeaders () отправит одну команду IMAP для извлечения заголовков. Сервер IMAP отправит все заголовки в одном ответе. Большая часть времени, необходимого для завершения всей операции, - это, вероятно, «время ожидания» сервера IMAP для обработки запроса и отправки ответа. Если вы включите подробное ведение журнала (установите свойство imap.VerboseLogging = true), а затем изучите содержимое свойства imap.LastErrorText, вы должны увидеть информацию о времени в истекших миллисекундах.

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

Одно замечание: чтобы избежать проблем, с которыми мы сталкивались при попытке получить огромное количество писем, Chilkat отправитмаксимальный запрос 1000 заголовков в одном запросе. Это означает, что внутри метода FetchHeaders (для случая извлечения 2500 заголовков) будут три отдельные пары запрос / ответ.

...