Últimos Cambios |
||
Blog personal: El hilo del laberinto |
Última Actualización: 12 de Agosto de 2004 - Jueves
Aunque entre los usuarios experimentados está mal visto, se considera un crimen en la mayoría de las listas de correo electrónico/news, ocasiona infinidad de problemas para los sistemas automatizados, y triplican (o más aún) el tamaño de los mensajes de correo electrónico, lo cierto es que hoy en día buena parte de los usuarios envían sus mensajes en formato HTML. Lo que muchas personas no saben es que, salvo SPAM y similar, los clientes de correo electrónico acostumbran a enviar dos versiones del texto, una en texto "plano" y otra como HTML, y el cliente de correo receptor elige una representación u otra según su conveniencia. Así pues, lo que se propone con esta pequeña utilidad es disponer de una herramienta que analice un mensaje de correo electrónico y devuelva exclusivamente el componente "text/plain", haciendo frente también a la presencia de ficheros adjuntos, imágenes, etc. El procedimiento realmente es muy sencillo:
Es importante rastrear exclusivamente los componentes MIME de primer nivel del mensaje, ya que no nos interesa analizar archivos adjuntos, mensajes adjuntos, etc.
El código fuente que implementa este proceso, escrito en Python (probado en Python 2.3.4), es el siguiente:
ATENCIÓN: Esta limpieza de correo, si se hace como frontal para un sistema automático, debe hacerse después de procesar cosas como los rebotes de correo, cuyo tipo MIME es "multipart/report", y análisis similares.import email import sys def devuelve_el_plain(msg) : if not msg.is_multipart() : tipo=msg.get_type() or "text/plain" if tipo!="text/plain" : return "NO HAY COMPONENTE 'text/plain'\n\n" return msg.get_payload(decode=True) for i in msg.get_payload() : tipo=i.get_type() if tipo=="text/plain" : return i.get_payload(decode=True) elif tipo=="multipart/alternative" : for j in i.get_payload() : if j.get_type()=="text/plain" : return j.get_payload(decode=True) return "NO HAY COMPONENTE 'text/plain'\n\n" a=open(sys.argv[1]).read() msg=email.message_from_string(a) print devuelve_el_plain(msg)
Más información sobre los OpenBadges
Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS