IMAP: PHP: как я могу получить и сохранить номер сообщения для удаления определенной почты

Я должен прочитать почтовый ящик моего сервера, используя IMAP, тогда я должен показать некоторые сообщения (письма с предопределенным содержимым) на сайте для администратора. Позже администратор может удалить или переместить почту с панели администратора, но как удалить или сменить конкретную почту с панели администратора? Есть ли способ сохранить идентификатор сообщения в почте? Как я могу получить идентификатор определенной почты в папке «Входящие»?

Большое спасибо за ваше время

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

Вот что вы можете попробовать: протокол IMAP требует, чтобы каждое сообщение имело уникальный идентификатор, и каждый почтовый ящик имел уникальное значение идентификатора идентификатора . Сочетание уникального идентификатора и уникальности идентификатора идентификатора почтового ящика сообщения никогда не будет ссылаться на разные сообщения. Поэтому, если вы используете это для идентификации сообщений, вы, по крайней мере, гарантируете, что не случайно удалите неправильное сообщение.

Проблема заключается в том, что значение достоверности уникального идентификатора гарантировано останется неизменным только на время сеанса IMAP. PHP обычно создает новый сеанс IMAP с каждым запросом страницы и закрывает сеанс в конце запроса. С другой стороны, спецификация IMAP предполагает, что уникальные идентификаторы остаются одинаковыми даже во время сеансов. Это делает следующий подход показательным:

  1. Идентифицировать сообщения по уникальному идентификатору (например, используя их в качестве атрибутов значения для флажков, которые используются для выбора сообщений.).
  2. Сохраняйте значение достоверности уникального идентификатора почтового ящика как скрытое поле в форме.
  3. При обработке представлений форм проверьте, является ли значение достоверности уникального идентификатора, представленное через форму, таким же, как и текущее.
  4. Остерегайтесь : есть IMAP-серверы, которые используют различное значение достоверности уникального идентификатора для каждого сеанса. Вы не сможете сделать что-нибудь полезное, если у вас такая реализация.

Вы можете получить текущее значение достоверности уникального идентификатора , вызвав imap_mailboxmsginfo . Большинство других функций из расширения IMAP PHP имеют параметр $options , который вы можете использовать, чтобы указать, что вы используете уникальный идентификатор вместо номера последовательности сообщений (другое средство для идентификации сообщений, которое еще более изменчиво, чем уникальный идентификатор ).

См. RFC 3501 для получения подробной информации о протоколе IMAP, особенно 2.3.1 Номера сообщений .