У меня есть необходимость скачать все заголовки в почтовом ящике (тело не понадобится). Почтовый ящик может содержать 100 тыс. Сообщений или более.
imap_headers () обещает вернуть все заголовки для почтового ящика; что сделало бы вещи простыми в использовании. Однако у меня есть опасения по поводу того, будет ли это эффективно для всего диапазона серверов IMAP (а некоторые не дают всех заголовков).
Альтернативой является использование imap_search () для получения списка идентификаторов, а затем imap_fetchheader () для итерации и получения всех заголовков (вероятно, с использованием некоторой системы очередей).
Кто-нибудь сталкивался с этой проблемой? Если imap_headers «работает» надежно (или есть простой способ сказать, что это не удалось), то это было бы предпочтительнее; в противном случае я думаю, что imap_fetchheader это путь.
Ни один из них не будет работать хорошо при любых обстоятельствах. Запрашивать заголовки сообщений все Сообщения в почтовом ящике, который содержит несколько тысяч или, может быть, сотни тысяч сообщений, — неправильная идея. С другой стороны, их обработка по одному не является нормой, так как используемая вами библиотека является синхронной, и, следовательно, вы будете ограничены временем прохождения туда и обратно между хостом, на котором выполняется ваш PHP-скрипт, и IMAP. сервер вы запрашиваете.
Получите асинхронную библиотеку IMAP и используйте для извлечения окно или диапазон сообщений разумного размера. Например. получение нескольких десятков или нескольких сотен сообщений каждый раз, вероятно, разумно.
Других решений пока нет …