Ich arbeite an der Einrichtung eines Skripts, das eingehende Nachrichten an eine Liste von Empfängern weiterleitet.Python 3 E-Mail-Körpercodierung
Hier ist, was ich habe jetzt:
ich die E-Mail von stdin gelesen (das ist, wie Postfix es geht):
email_in = sys.stdin.read()
incoming = Parser().parse(email_in)
sender = incoming['from']
this_address = incoming['to']
ich für mehrteiliger Test:
if incoming.is_multipart():
for payload in incoming.get_payload():
# if payload.is_multipart(): ...
body = payload.get_payload()
else:
body = incoming.get_payload(decode=True)`
I einrichten die ausgehende Nachricht:
msg = MIMEMultipart()
msg['Subject'] = incoming['subject']
msg['From'] = this_address
msg['reply-to'] = sender
msg['To'] = "[email protected]"
msg.attach(MIMEText(body.encode('utf-8'), 'html', _charset='UTF-8'))
s = smtplib.SMTP('localhost')
s.send_message(msg)
s.quit()
Das funktioniert sehr gut mit ASCII-Zeichen (engl. Text), leitet sie weiter und alles.
Wenn ich aber nicht-ASCII-Zeichen zu senden, es gibt wieder Kauderwelsch (abhängig von der E-Mail-Client Bytes oder ascii Darstellungen der utf-8 Zeichen)
Was das Problem sein kann? Ist es auf der eingehenden oder der ausgehenden Seite?
Sie sollten die Nutzlast für den 'MIMEText' Teil nicht codieren müssen; Es wird für Sie kodieren und trotzdem einen passenden Zeichensatz auswählen. Nicht dass dies die Ausgabe verändert. –