2011-03-16 25 views
8

Estoy trabajando en un script de canalización de correo electrónico que necesita guardar solo el contenido de la respuesta y no el correo electrónico original. Estoy usando una clase de analizador mime (http://www.phpclasses.org/package/3169-PHP-Decode-MIME-e-mail-messages.html) para obtener toda la información que necesito del correo electrónico:PHP - Filtrando el cuerpo del correo electrónico, eliminando las cotizaciones de respuesta

Message ID: [email protected] 
Reply ID: [email protected] 

Subject: Re: MessageX 
To: [email protected] 
From: Someone [email protected] 

Body: Hello, 
Blah Blah Blah 
-Someone 

On Wed, Mar 16, 2011 at 3:52 PM, <[email protected]> wrote: 
> Hello, 
> 
> Some other blah, blah, blah. 
> 
> Thank you, 
> Me 

En la sección del cuerpo, estoy recibiendo el correo electrónico citado originales. ¿Cómo puedo filtrar esto? Sé que los clientes de correo electrónico a menudo agregan ">" al lado del contenido citado, pero no estoy seguro si esto sería lo suficientemente bueno. Gracias por tu ayuda.

+2

que suena un poco como que está haciendo algún tipo de tipo de soporte al cliente de correo electrónico de respuesta en una cosa sistema. A menudo he visto algo como una cadena de "============= RESPONDER ESTA LINEA ========================== envíe un correo electrónico al "cliente" que luego se puede encontrar fácilmente y cortará * todas * las citas de respuesta. Obviamente, esto no es lo que estás tratando de hacer, pero también podría ser una opción válida para ti. –

Respuesta

9

Esto podría ser factible con una expresión regular. Proveedores:

$text = preg_replace('#(^\w.+:\n)?(^>.*(\n|$))+#mi', "", $text); 
+0

Gracias por la respuesta rápida, está funcionando bien hasta el momento. ¿Hay algún caso en que esto no funcione? – davishmcclurg

+0

Ciertamente hay clientes de correo electrónico que permiten o usan '>' textualmente en los correos. O si envía un correo electrónico al código fuente o diffs, etc. Para que sea un poco más resistente, podría intercambiar el último '+' por '{2,}' en la expresión regular. Con eso, solo coincidirá con al menos dos líneas '>' consecutivas, lo que es una señal segura de que es una parte citada. – mario

+0

Nunca habrá una solución perfecta para este problema. Es posible (aunque poco probable) tener contenido en el correo electrónico que parece ser la sección de respuestas. Considere las líneas 10 a 13 de [este fragmento] (http://pastebin.com/ZyJvBMbn) (modifiqué su ejemplo original). Con toda probabilidad, esas líneas terminarían siendo eliminadas. –

Cuestiones relacionadas