New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
email package and Unicode strings handling #43960
Comments
The support for Unicode strings in the email package The behaviour with Unicode strings in Header is This code works, but it should not:
Allowing this to work can cause confusion, I'm saying With MIMEText I obtain: m = MIMEText.MIMEText(u"àèìòù", _charset="us-ascii")
>>> print m.as_string() [ exception ] I think that the correct behaviour (for all functions
Regards Manlio Perillo |
Logged In: YES The last example is not right. >>> m = MIMEText.MIMEText(u"àèìòù", _charset="utf-8")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "C:\Python2.4\lib\email\MIMEText.py", line 28, in
__init__
self.set_payload(_text, _charset)
File "C:\Python2.4\lib\email\Message.py", line 218, in
set_payload
self.set_charset(charset)
File "C:\Python2.4\lib\email\Message.py", line 260, in
set_charset
self._payload = charset.body_encode(self._payload)
File "C:\Python2.4\lib\email\Charset.py", line 366, in
body_encode
return email.base64MIME.body_encode(s)
File "C:\Python2.4\lib\email\base64MIME.py", line 136, in
encode
enc = b2a_base64(s[i:i + max_unencoded])
UnicodeEncodeError: 'ascii' codec can't encode characters in
position 0-2: ordinal not in range(128) So it seems that email.Message does not handle Unicode strings. The code works if I set the charset to latin-1. |
Confirmed on trunk. |
It took me a while to figure out why latin-1 works. I turns out to be an accident: latin-1 uses quoted-printable encoding, and the email quoprimime module accidentally manages to quote unicode characters in the latin-1 range. The Header example, as noted by the OP, is working as documented. This confusing interface isn't going to get fixed in the current email package. The equivalent email6 API will be cleaner. The MIMEText portion is a duplicate of bpo-1368247. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: