diff --git a/AUTHORS b/AUTHORS index 81ec2f76..57035505 100644 --- a/AUTHORS +++ b/AUTHORS @@ -206,3 +206,4 @@ that much better: * Clay McClure (https://github.com/claymation) * Bruno Rocha (https://github.com/rochacbruno) * Norberto Leite (https://github.com/nleite) + * Jay Shirley (https://github.com/jshirley) diff --git a/mongoengine/fields.py b/mongoengine/fields.py index 7bbc221a..80421c15 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -160,8 +160,8 @@ class EmailField(StringField): r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*" # quoted-string r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-011\013\014\016-\177])*"' - # domain - r')@(?:[A-Z0-9](?:[A-Z0-9-]{0,253}[A-Z0-9])?\.)+[A-Z]{2,6}$', re.IGNORECASE + # domain (max length of an ICAAN TLD is 22 characters) + r')@(?:[A-Z0-9](?:[A-Z0-9-]{0,253}[A-Z0-9])?\.)+[A-Z]{2,22}$', re.IGNORECASE ) def validate(self, value): diff --git a/tests/fields/fields.py b/tests/fields/fields.py index 0af22a34..69d78ff8 100644 --- a/tests/fields/fields.py +++ b/tests/fields/fields.py @@ -2902,6 +2902,9 @@ class FieldTest(unittest.TestCase): "aJIazqqWkm7.net")) self.assertTrue(user.validate() is None) + user = User(email="new-tld@example.technology") + self.assertTrue(user.validate() is None) + user = User(email='me@localhost') self.assertRaises(ValidationError, user.validate)