Ich versuche, eine E-Mail zu senden und habe ein kleines Problem mit der Absenderadresse im Header-Teil des Nachrichteninhalts.Wie füge ich eine UTF-8 "From:" -Adresse zu einer E-Mail-Nachricht hinzu?
Im Grunde ist das, was ich in den Headern haben wollen:
From: "Real Name" <[email protected]>
Und das ist, was ich tue (Python 3.5):
message = email.mime.text.MIMEText(body)
message.add_header('From', from_hdr)
Es ist, als für ASCII erwartet funktioniert, aber nicht für UTF-8.
ein Nicht-ASCII-Namen wie "Strángé Nämé" <[email protected]>
die Eingabe von add_header()
codiert wird Gegeben:
Wenn der Wert enthält Nicht-ASCII-Zeichen ..... es ist automatisch codiert in RFC 2231-Format unter Verwendung eines CHARSET von utf-8 und eine SPRACHE von Keine.
Das Problem ist, dass die ganze Zeichenfolge - nicht nur der echte Name - codiert ist. Das Ergebnis sieht wie eine einzelne Zeichenfolge aus: =?utf-8?.....?=
und das ursprüngliche Format ist verloren. Der Mail-Server fügt ihm die scheinbar fehlende Domäne hinzu und der Schaden wird angerichtet.
Der Absender dann (decodiert durch die E-Mail-Programm des Empfängers) gezeigt wird, wie: "\"Strángé Nämé\" <[email protected]>"@server.example.com
Ich habe versucht, die Adresse mit email.utils.parseaddr()
und codieren nur den echten Namen Teil mit email.utils.encode_rfc2231()
zu teilen, aber das half nicht.
Ich vermeide UTF-8 in der Form: Feld für jetzt, weiß nicht, wie man richtig damit umgeht. Kannst du bitte helfen?
Es sieht aus wie ich eine doppelte Frage gestellt habe. Das tut mir leid. Es gibt eine andere Antwort hier: http://stackoverflow.com/questions/10551933/python-email-module-form-header-from-with-some-unicode-name-email – VPfB