Estoy trabajando con un corpus de correos electrónicos (del orden de decenas de miles) que están en formato EML y necesito extraer el contenido de texto de estos correos electrónicos.
Si bien eliminar los encabezados de los mensajes no es tan difícil y fácil de manejar con varios scripts que flotan en Internet, ninguno de ellos maneja algunas de las peculiaridades del formato, como secuencias de escape sin escape como =\n
y =3D
.
¿Existe alguna herramienta que pueda obtener el cuerpo de los archivos EML?
La herramienta debe:
emaildata es un paquete de python para extraer contenido de mensajes de correo electrónico.
De los ejemplos:
import email
from emaildata.text import Text
message = email.message_from_file(open('message.eml'))
text = Text.text(message)
Esto, combinado con Python glob.glob()
o os.walk()
funciones estándar, debería hacer que sea muy fácil realizar esto como una operación por lotes.
Como ejemplo, exporté un correo electrónico de Quora (usando Mozilla Thunderbird) como un archivo y encendí iPython:
Mirando a través de él, no había entradas = 3D, = 20 (aparte de un par de direcciones URL), pero había una serie de secuencias como \xe2\x80\x9cused car salesman\xe2\x80\x9d
esa que necesitaban resolverse, estas son secuencias Unicode .
Ejecución: unicode(text, 'utf-8')
para decodificar e imprimir, (con una fuente compatible con Unicode) , da:
Donde encontramos que \xe2\x80\x9cused car salesman\xe2\x80\x9d
es "vendedor de autos usados" tenga en cuenta las cotizaciones hacia arriba y hacia abajo .
Si necesita decodificar las partes de una URL con consulta, puede usarlas urllib.unquote()
para manejarlas, pero para su uso probablemente no le interesen las URL, ya sean consultas o no.
El módulo mailparser para nodejs maneja esto bien.
El archivo Léame del proyecto tiene un ejemplo de análisis de correos electrónicos con el módulo.
usuario2602
=3D
=>=
,=20
=> {espacio},={newline char}
=> cadena vacía que mencioné en mi pregunta :'(steve barnes
Mawg dice que reincorpore a Monica