How to send utf-8 mail in Python 3?
Peter Kleiweg
p.c.j.kleiweg at rug.nl
Fri Mar 5 16:34:00 EST 2010
I try to send e-mail from Python 3.1.1
Encoding as iso-8859-1 goes fine.
But encoding as utf-8 doesn't work.
What am I doing wrong?
Python 3.1.1 (r311:74480, Oct 2 2009, 11:50:52)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from email.mime.text import MIMEText
>>> text = 'H\u00e9'
>>> msg = MIMEText(text, 'plain', 'iso-8859-1')
>>> print(msg.as_string())
Content-Type: text/plain; charset="iso-8859-1"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
H=E9
>>> msg = MIMEText(text, 'plain', 'utf-8')
Traceback (most recent call last):
File "/my/opt/Python-3/lib/python3.1/email/message.py", line 269, in set_charset
cte(self)
TypeError: 'str' object is not callable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/my/opt/Python-3/lib/python3.1/email/mime/text.py", line 30, in __init__
self.set_payload(_text, _charset)
File "/my/opt/Python-3/lib/python3.1/email/message.py", line 234, in set_payload
self.set_charset(charset)
File "/my/opt/Python-3/lib/python3.1/email/message.py", line 271, in set_charset
self._payload = charset.body_encode(self._payload)
File "/my/opt/Python-3/lib/python3.1/email/charset.py", line 380, in body_encode
return email.base64mime.body_encode(string)
File "/my/opt/Python-3/lib/python3.1/email/base64mime.py", line 94, in body_encode
enc = b2a_base64(s[i:i + max_unencoded]).decode("ascii")
TypeError: must be bytes or buffer, not str
>>>
--
Peter Kleiweg
More information about the Python-list
mailing list