Umlaute in E-Mail-Body mit email und smtplib

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
feuervogel
User
Beiträge: 28
Registriert: Dienstag 18. September 2007, 14:59

Hallo,

ich möchte ganz simpel eine E-Mail verschicken, die im Body Umlaute enthält. Ich durchwühle jetzt seit 2 Stunden halb google und bin noch nicht fündig geworden...

Code: Alles auswählen

# -*- coding: utf-8 -*-

from smtplib import *
from email import *

s = SMTP("mail.b.c")
s.login("a@b.c","xxx")
        
msg = message.Message()
msg.set_charset("utf-8")
msg['Content-type'] = 'text/plain; charset=utf-8'
msg['Content-transfer-encoding'] = '8bit'
msg['From'] = "J <a@b.c>"
msg['Subject'] = "umlaute ö"
msg.set_payload("test ä",charset="utf-8")

msg['To'] = "M <d@e.f>"

s.sendmail(msg['From'],msg['To'],msg.as_string())
ich hab keine ahnung, wieso im header (also im subject) die umlaute richtig angezeigt werden, im payload (also im body) nicht!?!

eigentlich ist das teil eines django-moduls, da kommen die inhalte aus einer datenbank (klaro) und es wird sogar eine exception geworfen:

'ascii' codec can't encode characters in position 4-6: ordinal not in range(128)

Allerdings auch nur bei Umlauten im Body der E-Mail.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

feuervogel hat geschrieben:ich möchte ganz simpel eine E-Mail verschicken, die im Body Umlaute enthält.
Hallo feuervogel!

Vielleicht kannst du daraus Nutzen ziehen:
http://www.python-forum.de/topic-3158.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
feuervogel
User
Beiträge: 28
Registriert: Dienstag 18. September 2007, 14:59

gerold hat geschrieben:
feuervogel hat geschrieben:ich möchte ganz simpel eine E-Mail verschicken, die im Body Umlaute enthält.
Hallo feuervogel!

Vielleicht kannst du daraus Nutzen ziehen:
http://www.python-forum.de/topic-3158.html

mfg
Gerold
:-)
Das hatte ich mir zwar schon mal angeschaut, aber ja, jetzt hab ich die Lösung.

Ersetze

msg = message.Message()

mit

msg = MIMEText("döner","utf-8")

und es funktioniert...
Antworten