Meine Anwendung ist in Python geschrieben. Was ich mache ist, dass ich ein Skript für jede E-Mail, die ich per Postfix erhalten habe, mache und etwas mit dem E-Mail-Inhalt mache. Procmail ist verantwortlich für das Ausführen des Skripts, wobei die E-Mail als Eingabe genommen wird. Das Problem begann, als ich die Eingabe-Nachricht (möglicherweise Text) in ein email_message-Objekt konvertierte (weil Letzteres nützlich ist). Ich verwende email.message_from_string (wobei E-Mail das Standard-E-Mail-Modul ist, kommt mit Python).E-Mail-Körper ist manchmal eine Zeichenfolge und manchmal eine Liste. Warum?
import email message = email.message_from_string(original_mail_content) message_body = message.get_payload()
Diese message_body manchmal kehrt eine Liste [email.message.Message Beispiel email.message.Message Instanz] und irgendwann einen String (tatsächlicher Körper Inhalt der eingehenden E-Mail) zurück. Warum ist es. Und sogar ich fand eine weitere Beobachtung. Als ich durch die Email-Nachricht email.message.Message.get_payload() stöberte, fand ich diese .. " Die Nutzlast wird entweder ein Listenobjekt oder eine Zeichenkette sein. Wenn Sie das Listenobjekt mutieren, ändern Sie die Nutzinformation der Nachricht an Ort und Stelle ..... "" "
Also, wie habe ich generische Methode, um den Körper der E-Mail durch Python zu bekommen? Bitte hilf mir.
In der Nachrichtenliste, über die ich gesprochen habe, habe ich versucht, get_payload() für jedes der Objekte auszuführen. Beide bringen dasselbe zurück. Ist ein Objekt Art von Klon des anderen, so dass, wenn ich Get_Payload an einem einzigen Teil aufgerufen bekomme ??? –
Hängt davon ab, was Sie gesendet haben. Sie könnten zum Beispiel häufig eine text/html- und eine text/plain-Version der gleichen Sache bekommen. Sie könnten die Funktion ändern, um nach einem Text/einfachen Inhaltstyp zu suchen und ihn einem anderen Text/Typ vorzuziehen. – bobince
Super Bobince.Sie haben absolut Recht: D –