Fixed #14301 -- Handle email validation gracefully with email addresses containing non-ASCII characters. Thanks, Andi Albrecht.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@14216 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
767cf955d2
commit
36f2f7ee7c
|
@ -67,7 +67,11 @@ def forbid_multi_line_headers(name, val, encoding):
|
|||
result = []
|
||||
for nm, addr in getaddresses((val,)):
|
||||
nm = str(Header(nm.encode(encoding), encoding))
|
||||
result.append(formataddr((nm, str(addr))))
|
||||
try:
|
||||
addr = addr.encode('ascii')
|
||||
except UnicodeEncodeError: # IDN
|
||||
addr = str(Header(addr.encode(encoding), encoding))
|
||||
result.append(formataddr((nm, addr)))
|
||||
val = ', '.join(result)
|
||||
else:
|
||||
val = Header(val.encode(encoding), encoding)
|
||||
|
|
|
@ -363,3 +363,18 @@ class MailTests(TestCase):
|
|||
|
||||
settings.ADMINS = old_admins
|
||||
settings.MANAGERS = old_managers
|
||||
|
||||
def test_idn_validation(self):
|
||||
"""Test internationalized email adresses"""
|
||||
# Regression for #14301.
|
||||
mail.outbox = []
|
||||
from_email = u'fröm@öäü.com'
|
||||
to_email = u'tö@öäü.com'
|
||||
connection = mail.get_connection('django.core.mail.backends.locmem.EmailBackend')
|
||||
send_mail('Subject', 'Content', from_email, [to_email], connection=connection)
|
||||
self.assertEqual(len(mail.outbox), 1)
|
||||
message = mail.outbox[0]
|
||||
self.assertEqual(message.subject, 'Subject')
|
||||
self.assertEqual(message.from_email, from_email)
|
||||
self.assertEqual(message.to, [to_email])
|
||||
self.assertTrue(message.message().as_string().startswith('Content-Type: text/plain; charset="utf-8"\nMIME-Version: 1.0\nContent-Transfer-Encoding: quoted-printable\nSubject: Subject\nFrom: =?utf-8?b?ZnLDtm1Aw7bDpMO8LmNvbQ==?=\nTo: =?utf-8?b?dMO2QMO2w6TDvC5jb20=?='))
|
||||
|
|
Loading…
Reference in New Issue