Я работаю над почтовым клиентом imap.
У меня есть функция поиска, которая отлично работает.
Возвращает пользовательский список EmailHeaderInfo.
Этот класс EmailheaderInfo содержит следующие свойства:
UID, Тема, От (System.Net.Mail.MailAdress, также содержит отображаемое имя), Дата (Получение), Размер , Флаг (для проверки прочитанного / непрочитанного статуса) и Вложение (для проверки того, имеет ли электронная почта привязанность или нет). Я храню все в этом классе с правильной кодировкой.
В этой функции поиска я использую команду Imap SEARCH , чтобы получить идентификаторы, и с этими идентификаторами
Я использую следующую команду FETCH :
UID FETCH "+ uids [i] +" (UID RFC822.SIZE FLAGS BODY.PEEK [HEADER.FIELDS (получено от предметного типа содержимого)])
После каждой выборки я получаю размер и флаг с помощью регулярного выражения и другую информацию с заголовком разбора.
На данный момент для отображения 250 электронных писем требуется 8 сек.
Мне действительно любопытно мнение или предложение других людей о том, как сделать это быстрее.
Обновление:
Я запускаю команду Fetch с набором сообщений (я создал набор сообщений из результата команды SEARCH).
Теперь для перечисления ~ 450 писем требуется 1-2 сек. Наконец-то это действительно быстро.