Seite 1 von 1

Umlautproblem bei eMail

Verfasst: Dienstag 24. Mai 2011, 15:00
von andi24
Hallo zusammen,

ich versuche gerade über python eine eMail mit Anhang zu versenden und habe dafür das Beispiel auf dieser http://snippets.dzone.com/posts/show/757 ausprobiert:

Code: Alles auswählen

def sendMail(to, subject, files=[],server="localhost"):
        assert type(to)==list
        assert type(files)==list
        from = "Hans Meier <hans@meier.de>"

        msg = MIMEMultipart()
        msg['From'] = from
        msg['To'] = COMMASPACE.join(to)
        msg['Date'] = formatdate(localtime=True)
        msg['Subject'] = subject

        text="Bla bla ä ö ü ß"

        msg.attach( MIMEText(text))


        for file in files:
                part = MIMEBase('application', "octet-stream")
                part.set_payload( open(file,"rb").read() )
                Encoders.encode_base64(part)
                part.add_header('Content-Disposition', 'attachment; filename="%s"'
                        % os.path.basename(file))
                msg.attach(part)

        smtp = smtplib.SMTP(server)
        smtp.sendmail(fro, to, msg.as_string() )
        smtp.close()

Soweit klappt auch alles super, nur werden sämtliche Umlaute als ?? dargestellt ... hat jemand eine Ahnung, woran das liegt?

Vielen Dank für jede Hilfe!

Andi

Re: Umlautproblem bei eMail

Verfasst: Dienstag 24. Mai 2011, 15:03
von Hyperion
Welche Kodierung verwendet denn Dein Script? Und welche Kodierung verwendet Dein Mail-Client? Hast Du Dir die Mail mal in einem Texteditor unter Benutzung derselben Kodierung wie im Script angeguckt?

Re: Umlautproblem bei eMail

Verfasst: Dienstag 24. Mai 2011, 15:35
von andi24
Hallo Hyperion,
Hyperion hat geschrieben:Welche Kodierung verwendet denn Dein Script? Und welche Kodierung verwendet Dein Mail-Client? Hast Du Dir die Mail mal in einem Texteditor unter Benutzung derselben Kodierung wie im Script angeguckt?
mhmm...mein Problem ist schonmal, dass ich garnicht weiß, welche Kodierung das Script hat. Das hab ich ja nirgends angegeben. Die Datei selbst ist als utf-8 Datei abgespeichert. Ich hab jetzt mal zum Test versucht sie als latin1 zu speichern (durch Angabe im Texteditor), das hat aber auch nichts geändert :-(

Re: Umlautproblem bei eMail

Verfasst: Dienstag 24. Mai 2011, 15:37
von Hyperion
andi24 hat geschrieben: mhmm...mein Problem ist schonmal, dass ich garnicht weiß, welche Kodierung das Script hat. Das hab ich ja nirgends angegeben.
Das solltest Du vielleicht mal tun ;-) Ansonsten ist ja nicht klar, wie Python die Literale intern behandelt.
andi24 hat geschrieben: Die Datei selbst ist als utf-8 Datei abgespeichert. Ich hab jetzt mal zum Test versucht sie als latin1 zu speichern (durch Angabe im Texteditor), das hat aber auch nichts geändert :-(
Welche Datei?

Re: Umlautproblem bei eMail

Verfasst: Mittwoch 25. Mai 2011, 16:20
von andi24
Mit der Datei habe ich das Python-Script gemeint :-) Das ist im Texteditor als utf-8 abgespeichert..

Die Kodierung würde ich gerne angeben, aber ich weiß leider nicht wie :-(

Re: Umlautproblem bei eMail

Verfasst: Mittwoch 25. Mai 2011, 17:08
von cofi
Erster Treffer bei "python encoding": http://www.python.org/dev/peps/pep-0263/

Re: Umlautproblem bei eMail

Verfasst: Dienstag 31. Mai 2011, 08:06
von andi24
Hallo cofi,
cofi hat geschrieben:Erster Treffer bei "python encoding": http://www.python.org/dev/peps/pep-0263/
sorry, da haben wir uns falsch verstanden: Das Encoding für das Script (das man in der zweiten Zeile im Quellcode angibt - siehe Dein Link) hab ich natürlich schon als utf-8 angegeben. Die Datei selbst ist im Editor dann auch als utf-8 abgespeichert.

Ich dachte nur, ich muss an einer weiteren Stelle noch eine Kodierung angeben (siehe Beitrag von Hyperion: "Welche Kodierung verwendet denn Dein Script? Und welche Kodierung verwendet Dein Mail-Client? Hast Du Dir die Mail mal in einem Texteditor unter Benutzung derselben Kodierung wie im Script angeguckt?")

Re: Umlautproblem bei eMail

Verfasst: Dienstag 31. Mai 2011, 09:33
von BlackJack
Man wird irgendwo bei der Mail noch angeben müssen wie der Text der da drin steckt eigentlich kodiert ist.

Re: Umlautproblem bei eMail

Verfasst: Dienstag 31. Mai 2011, 09:36
von deets
@andi24

Ein paar Anmerkungen:

- deine list-asserts sind un-pythonisch. Dein Code wird nicht mehr funktionieren, wenn ich zB eine Menge statt Liste reingebe - obwohl beide iterierbar sind
- dein textkoerper ist ein byte-string, wenn du mit python 2.x unterwegs bist. Wenn ja, dann kann der in beliebigem encoding vorliegen. Besser waere denke ich ein unicode-literal, und explizit zu encodieren, bzw. die library das machen zu lassen.
- ich verwende fuer alle mail-belange TurboMail 3.0, das hat sich als simpel, robust & leicht erweiterbar erwiesen. Und loest eine Menge der dreckigen Details von MimeMessages - da kann ich zB mit purem unicode arbeiten, und sowas wie utf-8 und base64 und quoted printable encodierungen fuer dieses und jenes habe ich keinen brass mit

Nachtrag: BlackJack hat gerade noch nen richtigen hinweis gegeben, mein Punkt zwei ist also eher irrelevant - aber TurboMail bleibt ;)