Commit 7be27dc0 authored by Jannis Leidel's avatar Jannis Leidel
Browse files

[1.2.X] Fixed #14301 -- Handle email validation gracefully with email...

[1.2.X] Fixed #14301 -- Handle email validation gracefully with email addresses containing non-ASCII characters. Thanks, Andi Albrecht.

Backport from trunk (r14216).

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@14217 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent ece06a80
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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)
+15 −0
Original line number Diff line number Diff line
@@ -336,3 +336,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=?='))