PHP IMAP - должны ли сообщения электронной почты иметь messageid? - PullRequest
10 голосов
/ 15 декабря 2011

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

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

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

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

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

Спасибо

Ответы [ 2 ]

8 голосов
/ 15 декабря 2011

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

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

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

5 голосов
/ 15 декабря 2011

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

Хотя это необязательно, каждое сообщение ДОЛЖНО иметь поле «Message-ID:».

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

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

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