Mi aplicación está escrita en python. Lo que estoy haciendo es ejecutar un script en cada correo electrónico recibido por postfix y hacer algo con el contenido del correo electrónico. Procmail es responsable de ejecutar el script tomando el correo electrónico como entrada. El problema comenzó cuando estaba convirtiendo el mensaje de entrada (puede ser texto) a objeto email_message (porque este último es útil). Estoy usando email.message_from_string (donde el correo electrónico es el módulo de correo electrónico predeterminado, viene con python).El cuerpo del correo electrónico es a veces una cadena y una lista. ¿Por qué?
import email message = email.message_from_string(original_mail_content) message_body = message.get_payload()
Este message_body a veces se vuelve una lista [email.message.Message ejemplo, instancia email.message.Message] y en algún momento regresar una cadena (contenido propio cuerpo del correo electrónico entrante). Porque es E incluso encontré una observación más. Cuando estaba navegando a través de la carpeta docstring email.message.Message.get_payload(), encontré esto ...
"" " La carga útil será un objeto de lista o una cadena.Si modifica el objeto de lista , modifique la carga útil del mensaje en su lugar ... "" "
Entonces, ¿cómo puedo tener un método genérico para obtener el cuerpo del correo electrónico a través de python? Por favor, ayúdame.
En la lista de mensajes de la que hablé, intenté ejecutar get_payload() en cada uno de los objetos. Ambos devuelven lo mismo. ¿Es un objeto tipo de clon del otro, de modo que si obtengo el get_payload invocado, una sola parte lo hará? –
Depende de lo que le han enviado. Comúnmente, por ejemplo, puede obtener un texto/html y una versión de texto/simple de la misma cosa. Puede modificar la función para buscar y prefiere un texto/tipo de contenido simple sobre otros texto/tipos. – bobince
Bobince impresionante.Tiene toda la razón: D –