Поскольку POP3 не поддерживает флаги SEEN, используемые при установке IMAP, как вы можете использовать метод php imap_search () для получения только новых сообщений с сервера? Здесь есть несколько других подобных постов, которые оказались в тупиках, или пользователи, предлагающие проверить идентификатор сообщения в сохраненной базе данных, но нет четкого способа извлекать только новые сообщения с почтового сервера POP3 без необходимости извлекать все сообщения и переберите каждый из них, чтобы увидеть, если он новый.
Я попытался установить флаг, используя следующее:
$status = imap_setflag_full($inbox, $email_number, "\\Seen \\Flagged", ST_UID);
И используя это, чтобы получить:
$emails = imap_search($inbox,'UNSEEN');
Похоже, что способ работы POP3 делает его ужасным кандидатом на изучение PHP. Большинство клиентов удаляют сообщения с сервера после загрузки, и на сервере остаются только последние сообщения (в идеале одна машина будет извлекать данные с сервера POP, нет меток или статусов, которые могут быть получены несколькими устройствами)
К сожалению, если кто-то еще не решит присоединиться, похоже, что единственный способ быстро получить новые сообщения без циклического перебора всех старых сообщений — это удалите сообщение с сервера после загрузки.
Других решений пока нет …