Полезная информация заголовка IMAP не отображается

Я использую стандартные функции IMAP для получения писем на PHP. Мне нужно следить заMessage-ID (а такжеReferences а такжеIn-Reply-To) для каждого сообщения строить потоки. Как только эта система будет развернута, я хочу, чтобы пользователи могли отвечать на сообщения в своем почтовом клиенте, чтобы добавить сообщение в ветку, но в моем веб-интерфейсе ответы не могут быть прикреплены к исходному сообщению, потому что у меня нетIn-Reply-To Идентификатор из любых заголовков электронной почты. я хотел бы использоватьIn-Reply-To ID, чтобы прикрепить их ответ к уведомлению о новом сообщении, которое я отправил им, но не могу, потому что не могу получить идентификаторы. Если бы у меня былIn-Reply-To заголовок, сообщения могут быть сгруппированы, так как есть поток идентификаторов, соединяющих их.

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

Я не могу получить значения дляMessage-IDниIn-Reply-To даже если они действительно имеют значения. (Перейдите к любому сообщению в Gmail, щелкните раскрывающееся меню рядом с кнопкой ответа, нажмите «показать оригинал», и вы увидите, что вся информация заголовка, которая отсутствует для меня при вызове функций IMAP, фактически существует, так как хотя Gmail не хочет передавать эту информацию серверам IMAP.)

Я пробовал различные звонки, которые якобы получают информацию заголовка (imap_headerinfo, imap_fetchheader, imap_fetch_overview), но все они возвращают массив разреженных значений для информации заголовка, которая мне не нужна. После выполнения

$this->mbox = imap_open('{imap.gmail.com:993/imap/ssl}', $email, $password);

Я могу получить только несколько полезных значений из заголовка с помощью любого из этих вызовов:

imap_header($this->getImapStream(), "1");
imap_fetch_overview($this->getImapStream(), "1");
imap_fetchheader($this->getImapStream(), "1");

Я вижу такие вещи, какSubject, To, Reply-Toи другие значения заголовка, и все они точны, ноMessage-ID, References, In-Reply-Toи другая ценная информация заголовка в основном отсутствует (скорее, значения массива, которые их представляют, пусты в каждом случае)

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

Вы можете заметить, что у меня точно такой же вопрос, как наэта страница, но мне предложили сделать свой вопрос, вот что я и сделал.

РЕДАКТИРОВАТЬ

Если кто-то может дать мне возможность отвечать на сообщения с моего сервера без необходимости извлекатьMessage-ID из сообщения, на которое я отвечаю, это было бы одинаково здорово.

РЕДАКТИРОВАТЬ 2

Я перечислилMessage-ID из каждого сообщения в моем очень большом почтовом ящике и, насколько я вижу, около 40% идентификаторов действительно отображаются. Если я снова запускаю тот же тест, те же сообщения сохраняют своиMessage-IDs. Я ищу шаблон среди сообщений, которые показываютMessage-ID но есть очень веские доказательства отсутствия шаблонов среди типов сообщений.

Каждое сообщение в действительности имеетMessage-ID (и я проверил это даже для сообщений, чьи идентификаторы не отображаются с запросами IMAP), но функции IMAP выявляют только идентификаторы некоторых сообщений.

Ответы на вопрос(2)

Ваш ответ на вопрос