Re: [Python-de] Deutsche email in Python3
On Wed, 15 Aug 2012 12:59:00 +0200, Christopher Arndt wrote:
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.
Leider nein (das war mein erster Versuch). Dann gibt's #!/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","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='\r\n') 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 396, in _handle_text super(BytesGenerator,self)._handle_text(msg) File "/usr/lib64/python3.2/email/generator.py", line 201, in _handle_text self.write(payload) File "/usr/lib64/python3.2/email/generator.py", line 357, in write self._fp.write(s.encode('ascii', 'surrogateescape')) UnicodeEncodeError: 'ascii' codec can't encode character '\xfc' in position 9: ordinal not in range(128) server.quit()
Siehe http://docs.python.org/py3k/library/email.message.html#email.message.Message...
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
On 15.08.2012 13:05, Helmut Jarausch wrote:
Leider nein (das war mein erster Versuch). Dann gibt's
UnicodeEncodeError: 'ascii' codec can't encode character '\xfc' in position 9: ordinal not in range(128) server.quit()
Ehrlich gesagt, habe ich nicht mit SMTP.send_message() getestet, sondern nur mit msg.as_string(). Probier doch mal: server.sendmail(fromaddr, toaddrs, msg.as_string()) Und nochmal: bist du dir sicher, dass dein Quelltext mit richtigem (in deinem Fall: ISO-8859-1) Encoding gespeichert ist? Chris
participants (2)
-
Christopher Arndt -
Helmut Jarausch