PHP IMAP-ФАЙЛ - Обязательно ли в электронных письмах должен быть идентификатор сообщения?


Я получаю электронные письма из Gmail с помощью PHP и IMAP; однако в некоторых письмах нет идентификатора messageid. Разве не все сообщения должны иметь идентификатор сообщения?

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

Я делаю что-то не так?

Например, вот заголовок электронной почты, который я получаю

 [date] => Sun, 06 Nov 2011 21:21:56 -0500
    [subject] => Daylight Saving Time?  Chili's Saving Time!
    [to] => [email protected]
    [message_id] => 
    [from] => [email protected]
    [sender] => [email protected]
    [reply_toaddress] => [email protected]
    [size] => 14385
    [msgno] =>  156
    [status] => Unread

Спасибо

Author: vitalyp, 2011-12-15

2 answers

Любой MTA, с которым я когда-либо сталкивался, добавит идентификатор сообщения, если он еще не присутствует. Однако, если вам нужно отслеживать сообщения или передавать их, вам нужно будет установить значение Message-ID. Заголовок References и заголовок In-Reply-To используют значение предыдущего Message-ID, чтобы связать сообщения вместе.

References содержит список предыдущих значений Message-ID в цепочке ответов, а In-Reply-To содержит значение Message-ID, на которое текущее сообщение является прямым ответом.

Обратите внимание, что в соответствии с Спецификация RFC-2822, идентификатор сообщения технически не требуется. Хорошо выполненные MTA обычно включают один, но некоторые комментаторы ниже описывают случаи, когда идентификатор сообщения отсутствовал, что приводило к сбоям в клиентах обмена сообщениями.

 7
Author: Michael Berkowski, 2017-06-20 23:47:12

Идентификатор сообщения не имеет ничего общего с IMAP, но является частью самой почты и указан в RFC 2822 как "необязательный" (хотя в нем говорится, что он должен присутствовать):

Хотя это необязательно, каждое сообщение ДОЛЖНО содержать поле "Идентификатор сообщения:".

Таким образом, вы не делаете ничего плохого, если в некоторых письмах отсутствует идентификатор сообщения. Это происходит для всех писем, для которых MUA, первоначально отправивший письмо, не создал его (для чего, однако, каждый обычно используемый MUA должен делать).

Что касается уникального идентификатора для идентификации почты через IMAP, вы можете взглянуть на поле UID, описанное в стандарте.

 5
Author: ChrisM, 2011-12-15 00:25:05