Sepa si el correo electrónico fue una respuesta usando IMAP en PHP

No estoy seguro de si está en los encabezados o no, pero estoy buscando una manera de decir si un correo electrónico que recibo es una respuesta a un correo electrónico que envié, y si es así, solo tomar el nuevo texto, no “citado”. texto”

Un poco de historia: estoy creando un script que enviará correos electrónicos automáticamente. Estoy creando un trabajo cron para ejecutar en intervalos periódicos para verificar si hubo respuestas. Si hubo respuestas, solo quiero tomar las cosas nuevas, y no las viejas.

En el pasado, le enviaba correos electrónicos con la identificación en el asunto (Usted tiene una nueva respuesta [1234]), y luego verificaba el asunto entre [y]. Luego, tomaría todo el mensaje y lo almacenaría, ya que cada navegador web / correo electrónico usa un carácter o estilo diferente para el texto citado. Algunos hacen “>” algunos hacen una regla horizontal, algunos no hacen absolutamente nada.

De todos modos, solo estoy buscando algo en el encabezado del correo electrónico que indique que están respondiendo y cuál podría ser el nuevo texto. Si no es posible, seguiré haciendo lo que estoy haciendo.

Desafortunadamente, los clientes de correo electrónico básicamente pueden hacer lo que quieran con su mensaje, y no existe un estándar confiable para determinar cómo se originó un mensaje recibido en el cliente. Además, IMAP realmente no tiene nada que ver con eso. Los correos electrónicos se pueden enviar de diferentes maneras, incluido el correo web.

Lo mejor que puede hacer es buscar un número de ID en la línea de asunto (suponiendo que las personas no lo cambien, lo que rara vez hacen). También puede hacer lo que hace Google … confunde el texto de respuesta con el correo electrónico que envió a esa dirección. Si coincide, considéralo parte de la respuesta. Sin embargo, esto requiere un gran esfuerzo.

Puede saber si un correo electrónico es la respuesta de otro correo electrónico o no mediante la combinación de In-Reply-To y References .

Cada correo electrónico tiene una ID única en su encabezado llamada Message-ID , de acuerdo con este RFC 1 , puede hacer un seguimiento de los antepasados ​​de cualquier correo electrónico.

Lo he comprobado y funciona en todos los clientes (Outlook, Thunderbird)
Daré un ejemplo para usar.

1- En el encabezado del correo electrónico que envía por primera vez, usted (su servidor de correo o usted en código) envía una ID (Message-ID) ; si abre el código fuente del correo electrónico, lo verá así en la sección superior :

 ... // You (your code) send: Message-ID: <1@your-domain-mandatory.com> ... 

Solo necesita mantener este Message-ID en su progtwig. cualquier respuesta posterior se referirá a esta ID .

2- El cliente responderá el correo electrónico 1 a usted. El cliente enviará un crucial header para que le diga para qué correo electrónico esta respuesta es además de su propio Message-ID .

 ... // Client(Thunderbird) send: Message-ID: <2@your-domain-mandatory.com> In-Reply-To: <1@your-domain-mandatory.com> ... 

Cuando reciba el segundo correo electrónico, le será fácil seguir el correo electrónico anterior que envió porque la ID del correo (1) se encuentra en el encabezado In-Reply-To del correo (2).

3- Si desea responder de nuevo este correo electrónico dentro de su código, solo tiene que colocar el Message-ID de mensaje del correo (2) en el encabezado In-Reply-To y Message-ID of mail (1) y mail (2 ) en el encabezado de References . Entonces el cliente entenderá la cadena correctamente.

 ... // You (your code) send: Message-ID: <3@your-domain-mandatory.com> In-Reply-To: <2@your-domain-mandatory.com> References: <1@your-domain-mandatory.com> <2@your-domain-mandatory.com> ... 

En este encabezado, le está diciendo al cliente que este correo electrónico es una respuesta al correo (2) y los antepasados ​​son correo (1) y correo (2).

He trabajado con ellos y leído sobre ellos y está funcionando, mi problema ahora es simplemente obtener el texto del último correo electrónico y no el texto citado de las respuestas. (Estamos ejecutando nuestro propio sistema de emisión de boletos, creamos un comentario para cada correo electrónico)