mirror of
https://github.com/pacnpal/django-anymail.git
synced 2025-12-20 03:41:05 -05:00
Fix UnicodeEncodeError error while reporting invalid email address.
Fixes #148.
This commit is contained in:
@@ -36,6 +36,9 @@ Fixes
|
||||
* Support using `AnymailMessage` with django-mailer and similar packages that pickle
|
||||
messages. (See `#147`_. Thanks to `@ewingrj`_ for identifying the problem.)
|
||||
|
||||
* Fix UnicodeEncodeError error while reporting invalid email address on Python 2.7.
|
||||
(See `#148`_. Thanks to `@fdemmer`_ for reporting the problem.)
|
||||
|
||||
|
||||
v6.0
|
||||
----
|
||||
@@ -941,12 +944,14 @@ Features
|
||||
.. _#112: https://github.com/anymail/issues/112
|
||||
.. _#115: https://github.com/anymail/issues/115
|
||||
.. _#147: https://github.com/anymail/issues/147
|
||||
.. _#148: https://github.com/anymail/issues/148
|
||||
|
||||
.. _@ailionx: https://github.com/ailionx
|
||||
.. _@calvin: https://github.com/calvin
|
||||
.. _@costela: https://github.com/costela
|
||||
.. _@decibyte: https://github.com/decibyte
|
||||
.. _@ewingrj: https://github.com/ewingrj
|
||||
.. _@fdemmer: https://github.com/fdemmer
|
||||
.. _@janneThoft: https://github.com/janneThoft
|
||||
.. _@joshkersey: https://github.com/joshkersey
|
||||
.. _@Lekensteyn: https://github.com/Lekensteyn
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import json
|
||||
from traceback import format_exception_only
|
||||
|
||||
@@ -40,7 +42,7 @@ class AnymailError(Exception):
|
||||
|
||||
def __str__(self):
|
||||
parts = [
|
||||
" ".join([str(arg) for arg in self.args]),
|
||||
" ".join([six.text_type(arg) for arg in self.args]),
|
||||
self.describe_raised_from(),
|
||||
self.describe_send(),
|
||||
self.describe_response(),
|
||||
|
||||
@@ -158,13 +158,13 @@ def parse_address_list(address_list, field=None):
|
||||
for address in parsed:
|
||||
if address.username == '' or address.domain == '':
|
||||
# Django SMTP allows username-only emails, but they're not meaningful with an ESP
|
||||
errmsg = "Invalid email address '{problem}' parsed from '{source}'{where}.".format(
|
||||
errmsg = u"Invalid email address '{problem}' parsed from '{source}'{where}.".format(
|
||||
problem=address.addr_spec,
|
||||
source=", ".join(address_list_strings),
|
||||
where=" in `%s`" % field if field else "",
|
||||
source=u", ".join(address_list_strings),
|
||||
where=u" in `%s`" % field if field else "",
|
||||
)
|
||||
if len(parsed) > len(address_list):
|
||||
errmsg += " (Maybe missing quotes around a display-name?)"
|
||||
errmsg += u" (Maybe missing quotes around a display-name?)"
|
||||
raise AnymailInvalidAddress(errmsg)
|
||||
|
||||
return parsed
|
||||
|
||||
@@ -138,6 +138,12 @@ class ParseAddressListTests(SimpleTestCase):
|
||||
with self.assertRaisesMessage(AnymailInvalidAddress, "Display Name"):
|
||||
parse_address_list(['"Display Name"', '<valid@example.com>'])
|
||||
|
||||
def test_invalid_with_unicode(self):
|
||||
# (assertRaisesMessage can't handle unicode in Python 2)
|
||||
with self.assertRaises(AnymailInvalidAddress) as cm:
|
||||
parse_address_list([u"\N{ENVELOPE}"])
|
||||
self.assertIn(u"Invalid email address '\N{ENVELOPE}'", six.text_type(cm.exception))
|
||||
|
||||
def test_single_string(self):
|
||||
# bare strings are used by the from_email parsing in BasePayload
|
||||
parsed_list = parse_address_list("one@example.com")
|
||||
|
||||
Reference in New Issue
Block a user