Despojar firmas y respuestas de correos electrónicos

Actualmente estoy trabajando en un sistema que permite a los usuarios responder a los correos electrónicos de notificación que se envían ( suspiro ).

Necesito eliminar las respuestas y las firmas, de modo que me quede con el contenido real de la respuesta, sin todo el ruido.

¿Alguien tiene alguna sugerencia sobre la mejor manera de hacer esto?

Si su sistema es interno y / o tiene un número limitado de formatos de respuesta, es posible hacer un buen trabajo. Estos son los filtros que hemos configurado para las respuestas por correo electrónico a los boletos de trac:

Suelta todo el texto después de incluir:

  1. Líneas que son iguales a '-- \n' (delimitador de sig de correo electrónico estándar)
  2. Líneas que equivalen a '--\n' (las personas a menudo olvidan el espacio en el delimitador de sig; y esto no es tan común fuera de los sigs)
  3. Líneas que comienzan con '-----Original Message-----' (predeterminado de MS Outlook)
  4. Líneas que comienzan con '________________________________ ‘ (32 guiones bajos, Outlook nuevamente)
  5. Las líneas que comienzan con 'On ' y terminan con ' wrote:\n' (predeterminado en OS X Mail.app)
  6. Líneas que comienzan con 'From: ' (cuatro seguros Outlook y algunos otros formatos de respuesta)
  7. Líneas que comienzan con 'Sent from my iPhone'
  8. Líneas que comienzan con 'Sent from my BlackBerry'

Los números 3 y 4 son ‘comenzar con’ en lugar de ‘iguales’ porque a veces los usuarios aplastan las líneas en un accidente.

Tratamos de ser más liberales en cuanto a eliminar las respuestas, ya que es mucho más molesto (para nosotros) tener respuesta basura que corregir el texto faltante.

¿Alguien tiene otros formatos de la naturaleza que quieren compartir?

Echa un vistazo a la gem email_reply_parser – https://github.com/github/email_reply_parser . Hace un buen trabajo manejando este problema.

No creo que puedas hacer esto de manera confiable (las firmas solían comenzar con '--' pero ya no lo veo). Tal vez sea mejor pedirle a la gente que responda entre los encabezados de texto y luego simplemente eliminar la respuesta de esto. No es elegante, pero quizás más confiable.

p.ej

 REPLY BETWEEN HERE --> AND HERE --> 

así que simplemente busque los encabezados requeridos arriba y tome lo que está entre ellos.

Si quieres algo poderoso y sólido, y no te importa leer publicaciones académicas, puedes revisar esto:

  • Aprendiendo a extraer firmas y líneas de respuesta del correo electrónico

Aquí está la página de inicio de uno de los autores, con más información y algunas descargas:

  • Vitor R. Carvalho – Software y conjuntos de datos – (Vitor Carvalho)

Un enfoque que se puede usar solo para la firma (además de detectar __ o -) es probar si el primer nombre y / o el apellido del remitente están en una línea corta (~ que contiene de 3 a 4 palabras, máximo).

El nombre del remitente está en el encabezado del correo electrónico sin procesar, la mayoría de las veces junto a la dirección de correo electrónico, como en: From: John Doe

Esto se basaría en la suposición de que rara vez escribe su propio nombre en un correo electrónico, y si lo hace, es probable que sea una oración larga .

Por supuesto, habrá algunos falsos positivos, pero puede que no sea un gran problema dependiendo de lo que hagas (lo usamos para plegar el texto y la firma entre comillas en un … botón de estilo gmail, por lo que la sobredetección no termina en pérdida Cualquier contenido, simplemente está fuera de lugar).

Si puede asumir que estos correos electrónicos están en texto sin formato, simplemente elimine las líneas que comiencen con “>” como respuestas, y la línea “-” debe delimitar la firma. Pero es posible que esas suposiciones no funcionen, ya que no todas las personas que usan Internet utilizan software que cumple con las reglas.

Hay una muy buena biblioteca de PHP dedicada al análisis de correo electrónico.

http://williamdurand.fr/EmailReplyParser/

https://github.com/willdurand/EmailReplyParser

El delimitador de firma recomendado es “- \ n”. Si la gente sigue esta recomendación, quitar las firmas debería ser fácil.

    Intereting Posts