Как найти только «новые» сообщения при использовании PHP-функций IMAP для почтового ящика POP3? - PullRequest
1 голос
/ 07 ноября 2010

Я использую функции PHP IMAP для извлечения сообщений из почтового ящика POP3, и мне было интересно, есть ли способ отличить новые сообщения от старых?

К сожалению, я не могу просто удалить те, которыеизвлекается, поскольку они должны оставаться на почтовом сервере, поэтому мне интересно, что каждый раз, когда я подключаюсь, как я могу просто получить новые ИЛИ иметь возможность отличить новые от старых, которые я уже извлек ранее?

Я знаю, что к каждому сообщению прикреплен UID, и я мог бы использовать это ... однако я читал, что это может измениться, если сообщения будут удалены;поскольку сообщения могут быть удалены с сервера вниз по дорожке.

Ответы [ 2 ]

1 голос
/ 08 ноября 2010

Хорошо нашел это ..

По сути, протокол pop3 не поддерживает эту функцию.Однако вы можете реализовать это с помощью идентификатора сообщения.Идентификатор сообщения - это уникальный идентификатор электронной почты на сервере POP3.Ваше приложение может получить идентификатор сообщения указанной электронной почты с помощью метода GetMsgID объекта POPMAIN.

Во-первых, ваше приложение должно записать идентификатор сообщения электронной почты, полученный в локальный список идентификаторов сообщений.В следующий раз, прежде чем вы получите письмо, сравните локальный идентификатор сообщения с удаленным идентификатором сообщения.Если этот идентификатор сообщения существует в вашем локальном списке идентификаторов, значит, он старый, в противном случае он новый.

Хотя я почти уверен, что читал раньше, что не все клиенты будут возвращать message_id ... Кто-нибудь знает, если это правильно?

0 голосов
/ 09 марта 2018

Это сработало для меня:

$result = imap_search($connection, 'UNSEEN');

Ссылка: https://www.electrictoolbox.com/php-imap-unread-messages/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...