Deutsche email in Python3

15/08/2012 - 12:04 von Helmut Jarausch | Report spam
Hallo,

ich schaffe es nicht, ein email mit latin1 Zeichen aus Python3 zu versenden.

Hat vielleicht jemand einen Tipp für mich?

Was ist hier falsch:

#!/usr/bin/python3
#_*_ coding: latin1 _*_

import smtplib
from email.message import Message
import datetime

msg= Message()
msg.set_charset('latin-1')
msg['Subject'] = "*** Email Test ***"
msg['From'] = "Email_Tester@numa-sv.igpm.rwth-aachen.de"
msg['To'] = "jarausch@igpm.rwth-aachen.de"
msg['Date'] = datetime.datetime.utcnow().strftime('%m/%d/%Y %I:%M:%S %p')

server= smtplib.SMTP("igpm.igpm.rwth-aachen.de")
msg.set_payload("Gedanken über einen Test".encode("iso-8859-1"),"iso-8859-1")

server.send_message(msg)

Traceback (most recent call last):
File "./Test_EMail_Py3.py", line 17, in <module>
server.send_message(msg)
File "/usr/lib64/python3.2/smtplib.py", line 812, in send_message
g.flatten(msg_copy, linesep='')
File "/usr/lib64/python3.2/email/generator.py", line 91, in flatten
self._write(msg)
File "/usr/lib64/python3.2/email/generator.py", line 137, in _write
self._dispatch(msg)
File "/usr/lib64/python3.2/email/generator.py", line 163, in _dispatch
meth(msg)
File "/usr/lib64/python3.2/email/generator.py", line 393, in _handle_text
if _has_surrogates(msg._payload):
TypeError: can't use a string pattern on a bytes-like object

server.quit()
 

Lesen sie die antworten

#1 Christopher Arndt
15/08/2012 - 12:59 | Warnen spam
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)

On 15.08.2012 12:04, Helmut Jarausch wrote:
Was ist hier falsch:

msg.set_payload("Gedanken über einen Test".encode("iso-8859-1"),"iso-8859-1")



Das encode() ist zu viel. Du übergibst einfach einen string und das
Encoding und email.message.Message kümmert AFAICS sich um das kodieren.

Siehe
http://docs.python.org/py3k/library...et_payload

und die Doku zu set_charset() darunter.

Hast du außerdem darauf geachtet, dass dein Editor deinen Quelltext auch
wirklich mit ISO-8859-1 Kodierung gespeichert hat? Ich würde empfehlen,
wenn möglich durchgàngig UTF-8 zu verwenden, sowohl für den Quelltext
als auch für die Kodierung von Ein-/Ausgabedaten.

Chris




Ähnliche fragen