Mit get_payload in Fremdheit geraten: Es scheint zu verpuffen, wenn es in der Nachricht, die es entschlüsselt, ein Gleichheitszeichen sieht. Hier ist Code, der den Fehler anzeigt:Python: E-Mail get_payload Dekodierung schlägt fehl, wenn Gleichheitszeichen getroffen wird?
import email
data = file('testmessage.txt').read()
msg = email.message_from_string(data)
payload = msg.get_payload(decode=True)
print payload
Und hier ist ein Beispielnachricht: test message.
Die Nachricht wird nur bis zum ersten "=" gedruckt. Der Rest entfällt. Weiß jemand was los ist?
Das gleiche Skript mit "decode = False" gibt die vollständige Nachricht zurück, so dass die Dekodierung mit dem Gleichheitszeichen unzufrieden ist.
Dies ist unter Python 2.5.
Danke Richie, das funktioniert. Ich werde mich aber auch mit Anhängen beschäftigen, die kein Text sind, daher möchte ich die Wiederwahl wahrscheinlich nicht wahllos vornehmen. Ich muss Text/plain erkennen und mache dann nur die Ersetzung, was ein wenig subtil ist, da ich den mime type für den Nachrichtenteil bereits hinter dem Aufruf message_from_string finde. Ist es möglich, die Dekodierung außerhalb des Aufrufs get_payload separat aufzurufen? – Parand
Sind Sie sicher, dass Sie jemals mit echten binären Anhängen arbeiten werden? Anhänge werden normalerweise in der E-Mail mit base64 oder ähnlichem verschlüsselt. Obwohl sie eine Binärdatei darstellen, werden sie in der E-Mail als Text codiert. – RichieHindle
Sie haben wieder Recht; Ich testete mit einer anständigen Anzahl von Beispielen und sie alle funktionieren gut mit der Substitution, die Sie vorschlagen. Danke noch einmal. – Parand