Message209943
Currently the `msg` argument of `smtplib.SMTP.sendmail` accept a `str` in Py3k if every characters in this `str` is in ASCII range, or a `bytes`.
This is confusing for new comer because:
1. When you send your mail using only ASCII characters, everything is fine (no matter you use bytes or str).
2. When sometimes you included non-ASCII characters in your email, the traceback is hard to understand.
Here's an example of such traceback:
Traceback (most recent call last):
File "./manage.py", line 113, in <module>
manager.run()
File "/data/web/cgi-bin/venv/lib/python3.3/site-packages/flask_script/__init__.py", line 405, in run
result = self.handle(sys.argv[0], sys.argv[1:])
File "/data/web/cgi-bin/venv/lib/python3.3/site-packages/flask_script/__init__.py", line 384, in handle
return handle(app, *positional_args, **kwargs)
File "/data/web/cgi-bin/venv/lib/python3.3/site-packages/flask_script/commands.py", line 145, in handle
return self.run(*args, **kwargs)
File "./manage.py", line 108, in run
conn.send(msg)
File "/data/web/cgi-bin/venv/lib/python3.3/site-packages/flask_mail.py", line 168, in send
message.as_string())
File "/data/web/cgi-bin/python-3.3.3/lib/python3.3/smtplib.py", line 747, in sendmail
msg = _fix_eols(msg).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\u9f99' in position 646: ordinal not in range(128)
Here's my proposal:
--- smtplib.py.orig 2014-02-01 21:26:47.000000000 -0500
+++ smtplib.py 2014-02-01 21:37:51.000000000 -0500
@@ -744,7 +744,12 @@
esmtp_opts = []
print(msg)
if isinstance(msg, str):
- msg = _fix_eols(msg).encode('ascii')
+ try:
+ msg = _fix_eols(msg).encode('ascii')
+ except UnicodeEncodeError:
+ raise SMTPException(
+ "msg may be a string containing characters in the "
+ "ASCII range, or a byte string.")
if self.does_esmtp:
# Hmmm? what's this? -ddm
# self.esmtp_features['7bit']="" |
|
Date |
User |
Action |
Args |
2014-02-02 02:41:28 | yegle | set | recipients:
+ yegle, barry, r.david.murray |
2014-02-02 02:41:28 | yegle | set | messageid: <1391308888.03.0.522502415802.issue20482@psf.upfronthosting.co.za> |
2014-02-02 02:41:27 | yegle | link | issue20482 messages |
2014-02-02 02:41:27 | yegle | create | |
|