New submission from yegle:
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']=""
----------
components: email
messages: 209943
nosy: barry, r.david.murray, yegle
priority: normal
severity: normal
status: open
title: smtplib.SMTP.sendmail: improve exception message
type: enhancement
versions: Python 3.3
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue20482>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com