Seite 1 von 1

smtplib: Encoding

Verfasst: Donnerstag 6. September 2012, 11:59
von glocke
Hi, ich habe Probleme mit dem Encoding in Mails, die ich via smtplib versende. Hier ein Beispiel:

Code: Alles auswählen

from __future__ import unicode_literals
import smtplib

mail = {
    'address' : '###',
    'host'    : '###',
    'user'    : '###',
    'pass'    : '###'
}

def send(to, subject, message):
    body = 'From: MailTester <{0}>\nTo: {1}\nSubject: {2}\n\n{3}'.format(mail['address'], to, subject, message)
    server = smtplib.SMTP(mail['host'])
    server.login(mail['user'], mail['pass'])
    try:
        result = server.sendmail(mail['address'], to, body.encode('utf-8'))
        print 'Erfolgreich'
    except smtplib.SMTPRecipientsRefused:
        result = None
        print 'Keiner hat was bekommen!'
    server.quit()
    return result
Gebe ich als subject z.B. <b>'Töst mit OE'</b> und für die message <b>'Probleme gibt es mit ß,ö usw.'</b>, erhalte ich als Mail:
<b>Betreff:</b> TXXst mit OE
<b>Nachricht:</b> Probleme gibt es mit ß,ö usw.
Was mache ich falsch?

LG Glocke

Re: smtplib: Encoding

Verfasst: Donnerstag 6. September 2012, 12:48
von BlackJack
@glocke: Du kodierst die Zeichen falsch. Der Betreff muss speziell kodiert/escaped werden, denn in den Headern sind nur ASCII-Zeichen erlaubt. Und wenn Du den Body irgendwie kodierst, muss das auch im Header irgendwo vermerkt werden, denn sonst weiss der Empfänger ja gar nicht wie er die Daten wieder dekodieren soll.

Re: smtplib: Encoding

Verfasst: Donnerstag 6. September 2012, 13:44
von glocke
BlackJack hat geschrieben:@glocke: Du kodierst die Zeichen falsch. Der Betreff muss speziell kodiert/escaped werden, denn in den Headern sind nur ASCII-Zeichen erlaubt. Und wenn Du den Body irgendwie kodierst, muss das auch im Header irgendwo vermerkt werden, denn sonst weiss der Empfänger ja gar nicht wie er die Daten wieder dekodieren soll.
Davon bin ich ausgegangen. Nur wie füge ich die Kodierung in den Header ein?

Re: smtplib: Encoding

Verfasst: Sonntag 9. September 2012, 17:26
von sparrow
email und email.header kennst du schon?