From c068f000be7c486abb8b17fc565383679d7d4f82 Mon Sep 17 00:00:00 2001 From: Chaitanya Rahalkar Date: Tue, 17 Dec 2024 23:17:17 -0600 Subject: [PATCH] Fixed #36014 -- Supported international domains in EmailValidator. --- django/core/validators.py | 20 +++++++------------ .../field_tests/test_emailfield.py | 3 ++- tests/validators/tests.py | 14 +++++++++++++ 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/django/core/validators.py b/django/core/validators.py index c4e734c1d8..ff9573b172 100644 --- a/django/core/validators.py +++ b/django/core/validators.py @@ -6,7 +6,6 @@ from urllib.parse import urlsplit from django.core.exceptions import ValidationError from django.utils.deconstruct import deconstructible -from django.utils.encoding import punycode from django.utils.ipv6 import is_valid_ipv6_address from django.utils.regex_helper import _lazy_re_compile from django.utils.translation import gettext_lazy as _ @@ -76,14 +75,14 @@ class DomainNameValidator(RegexValidator): # Max length for domain name labels is 63 characters per RFC 1034 sec. 3.1. domain_re = r"(?:\.(?!-)[a-z" + ul + r"0-9-]{1,63}(?', ValidationError), + (validate_email, "email@xn--4ca9at.com", None), + (validate_email, "email@öäü.com", None), + (validate_email, "email@עִתוֹן.example.il", None), + (validate_email, "email@މިހާރު.example.mv", None), + (validate_email, "email@漢字.example.com", None), + (validate_email, "editor@މިހާރު.example.mv", None), + (validate_email, "@domain.com", ValidationError), + (validate_email, "email.domain.com", ValidationError), + (validate_email, "email@domain@domain.com", ValidationError), + (validate_email, "email@domain..com", ValidationError), + (validate_email, "email@.domain.com", ValidationError), + (validate_email, "email@-domain.com", ValidationError), + (validate_email, "email@domain-.com", ValidationError), + (validate_email, "email@domain.com-", ValidationError), # Quoted-string format (CR not allowed) (validate_email, '"\\\011"@here.com', None), (validate_email, '"\\\012"@here.com', ValidationError),