Nützliche IMAP-Header-Informationen werden nicht angezeigt

Ich verwende Standard-IMAP-Funktionen, um E-Mails in PHP zu erhalten. Ich muss den Überblick behaltenMessage-ID (undReferences undIn-Reply-To) für jede Nachricht, um Threads zu erstellen. Nach der Bereitstellung dieses Systems sollen Benutzer in der Lage sein, auf Nachrichten in ihrem E-Mail-Client zu antworten, um eine Nachricht zu einem Thread hinzuzufügen. In meiner Webschnittstelle können Antworten jedoch nicht an den ursprünglichen Beitrag angehängt werden, da ich keine habe einIn-Reply-To ID aus beliebigen E-Mail-Headern. ich würde ... benutzenIn-Reply-To ID, um ihre Antwort an die Benachrichtigung anzuhängen, die ich ihnen über einen neuen Beitrag gesendet habe, aber ich kann nicht, weil ich die IDs nicht erhalten kann. Wenn ich eine hätteIn-Reply-To Header, Nachrichten könnten gruppiert werden, da ein Thread von IDs sie verbindet.

Außerdem möchte ich in der Lage sein, auf jede Nachricht zu antworten, die der Benutzer an die E-Mail-Adresse des Servers sendet, wenn bei der Übermittlung ein Fehler aufgetreten ist. In diesem Fall benötige ich dieMessage-ID von ihrer Botschaft, damit ich das machen kannIn-Reply-To ID der Nachricht, die ich als Antwort sende.

Ich kann keine Werte bekommen fürMessage-ID, NochIn-Reply-To obwohl sie tatsächlich Werte haben. (Gehen Sie zu einer beliebigen Nachricht in Google Mail, klicken Sie auf das Dropdown-Menü neben der Antwortschaltfläche, und klicken Sie auf "Original anzeigen". Sie werden sehen, dass alle Header-Informationen, die mir fehlen, wenn ich die IMAP-Funktionen aufrufe, tatsächlich vorhanden sind Google Mail möchte diese Informationen jedoch nicht an IMAP-Server weitergeben.)

Ich habe eine Vielzahl von Anrufen ausprobiert, die angeblich die Header-Informationen erhalten (imap_headerinfo, imap_fetchheader, imap_fetch_overview), aber sie alle geben das Array von Sparse-Werten für die Header-Informationen zurück, die ich nicht benötige. Nach dem Ausführen

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

Ich kann mit jedem dieser Aufrufe nur ein paar nützliche Werte aus dem Header herausholen:

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

Ich kann solche Sachen sehenSubject, To, Reply-To, und andere Header-Werte, und sie sind alle korrekt, aberMessage-ID, References, In-Reply-Tound andere wertvolle Header-Informationen fehlen größtenteils (vielmehr sind die Array-Werte, die sie darstellen, in jedem Fall leer).

Ich kann fast garantieren, dass das Problem nicht mit dem Code selbst zusammenhängt, da ich einige Werte in den Kopfzeilen sehe und die Nachrichtentexte erfolgreich abrufen kann. Es ist einfach so, als würde Google filtern, welche Header-Informationen ich sehen kann.

Möglicherweise stellen Sie fest, dass ich genau die gleiche Frage habe wie amdiese Seite, aber es wurde vorgeschlagen, dass ich meine eigene Frage stelle, also habe ich das getan.

BEARBEITEN

Wenn mir jemand die Möglichkeit geben kann, auf Nachrichten von meinem Server zu antworten, ohne die abzurufenMessage-ID Von der Nachricht, auf die ich antworte, wäre das genauso beeindruckend.

BEARBEITEN 2

Ich habe das aufgelistetMessage-ID Aus jeder Nachricht in meinem sehr großen Posteingang und, wie ich sehe, aus 40% der IDs. Wenn ich denselben Test erneut durchführe, behalten dieselben Nachrichten ihre GültigkeitMessage-IDs. Ich suche nach einem Muster unter den Mitteilungen, die das zeigenMessage-ID Es gibt jedoch sehr starke Anzeichen für ein Nichtmuster unter den Nachrichtentypen.

Jede Nachricht hat in Wirklichkeit eineMessage-ID (und ich habe dies auch für die Nachrichten überprüft, deren IDs bei IMAP-Abfragen nicht angezeigt werden), aber IMAP-Funktionen zeigen nur die ID einiger Nachrichten an.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage