Umlautproblem in mailscript

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Donnerstag 29. Juni 2006, 20:05

Hallo,
dieses kleine Script verwende ich zum Versenden von MP3s.
Geht auch alles, nur bekommen einige Empfänger im Betreff und im Textfeld die Umlaute nicht richtig dargestellt. Im Scriptkopf habe ich # -*- coding: iso-8859-1 -*- eingetragen. Ich kanns nicht reproduzieren, da alle meine Mail-Browser die Umlaute korrekt darstellen.
Muss ich den Codec für 'subject' und 'mailtext' extra definieren und wenn ja, wie ?

Gruss, Seven

Code: Alles auswählen

def Send_mp3():
    msg = MIMEMultipart()
    msg['From'] = absender
    msg['To'] = empfaenger
    msg['Subject'] = subject                         
    msg.preamble = ''
    msg.epilogue = ''
    msg.attach(MIMEText(mailtext))

    att = open(path_mp3 + gv.filename + '.mp3', 'rb')
    send_snd = MIMEAudio(att.read(),_subtype = 'mpeg')
    att.close()
    send_snd.add_header('Content-Disposition', 'attachment', filename = fname + '.mp3')
    msg.attach(send_snd)
    smtp_server = smtplib.SMTP(domain.net)
    smtp_server.login(mymail@host.de,password)
    smtp_server.sendmail(absender, empfaenger, msg.as_string())
    smtp_server.quit()
BlackJack

Freitag 30. Juni 2006, 17:22

Sowohl für Header als auch den Textteil musst Du eine Kodierung angeben. Bei Headern muss alles ausserhalb von ASCII auch noch extra kodiert werden. Das macht die Header-Klasse:

Code: Alles auswählen

In [54]: print Header('hallöle'.decode('utf-8'), 'iso-8859-1')
=?iso-8859-1?q?hall=F6le?=
Die Mime-Objekte haben zum Beispiel eine Methode `set_charset()` um die verwendete Kodierung deklarieren zu können.
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Montag 3. Juli 2006, 13:43

Danke,
mit

Code: Alles auswählen

msg.set_charset("iso-8859-1")
klappts auch.

Gruss, Seven
Antworten