smtplib: Encoding

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
glocke
User
Beiträge: 66
Registriert: Mittwoch 23. Februar 2011, 21:18

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
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.
glocke
User
Beiträge: 66
Registriert: Mittwoch 23. Februar 2011, 21:18

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?
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

email und email.header kennst du schon?
Antworten