[Python-de] Deutsche email in Python3
Helmut Jarausch
jarausch at igpm.rwth-aachen.de
Mi Aug 15 13:05:10 CEST 2012
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 at numa-sv.igpm.rwth-aachen.de"
msg['To'] = "jarausch at 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.set_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
Mehr Informationen über die Mailingliste python-de