Index: django/core/validators.py
===================================================================
--- django/core/validators.py	(revision 5148)
+++ django/core/validators.py	(working copy)
@@ -21,10 +21,20 @@
 ansi_date_re = re.compile('^%s$' % _datere)
 ansi_time_re = re.compile('^%s$' % _timere)
 ansi_datetime_re = re.compile('^%s %s$' % (_datere, _timere))
+
+ADDR_SPEC = """
+((?:
+    [-!#$%&'*+/=?^_`{}|~0-9A-Z]+(?:\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)* # dot-atom
+)|(?:
+    "(?:[\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-011\013\014\016-\177])*" # quoted-string
+))@(
+    (?:[A-Z0-9-]+\.)+[A-Z]{2,6} #domain
+)
+"""
+
 email_re = re.compile(
-    r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*"  # dot-atom
-    r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-011\013\014\016-\177])*"' # quoted-string
-    r')@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}$', re.IGNORECASE)  # domain
+    "^(?:" + ADDR_SPEC + ")|(?:\w[\w ]*)<" + ADDR_SPEC + ">$", re.VERBOSE | re.IGNORECASE)
+
 integer_re = re.compile(r'^-?\d+$')
 ip4_re = re.compile(r'^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$')
 phone_re = re.compile(r'^[A-PR-Y0-9]{3}-[A-PR-Y0-9]{3}-[A-PR-Y0-9]{4}$', re.IGNORECASE)
@@ -141,7 +151,7 @@
         date(year, month, day)
     except ValueError, e:
         msg = gettext('Invalid date: %s') % gettext(str(e))
-        raise ValidationError, msg    
+        raise ValidationError, msg
 
 def isValidANSIDate(field_data, all_data):
     if not ansi_date_re.search(field_data):
@@ -244,7 +254,7 @@
             raise ValidationError, _("The URL %s is a broken link.") % field_data
     except: # urllib2.URLError, httplib.InvalidURL, etc.
         raise ValidationError, _("The URL %s is a broken link.") % field_data
-        
+
 def isValidUSState(field_data, all_data):
     "Checks that the given string is a valid two-letter U.S. state abbreviation"
     states = ['AA', 'AE', 'AK', 'AL', 'AP', 'AR', 'AS', 'AZ', 'CA', 'CO', 'CT', 'DC', 'DE', 'FL', 'FM', 'GA', 'GU', 'HI', 'IA', 'ID', 'IL', 'IN', 'KS', 'KY', 'LA', 'MA', 'MD', 'ME', 'MH', 'MI', 'MN', 'MO', 'MP', 'MS', 'MT', 'NC', 'ND', 'NE', 'NH', 'NJ', 'NM', 'NV', 'NY', 'OH', 'OK', 'OR', 'PA', 'PR', 'PW', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VA', 'VI', 'VT', 'WA', 'WI', 'WV', 'WY']
@@ -373,13 +383,13 @@
             self.error_message = error_message
 
     def __call__(self, field_data, all_data):
-        # Try to make the value numeric. If this fails, we assume another 
+        # Try to make the value numeric. If this fails, we assume another
         # validator will catch the problem.
         try:
             val = float(field_data)
         except ValueError:
             return
-            
+
         # Now validate
         if self.lower and self.upper and (val < self.lower or val > self.upper):
             raise ValidationError(self.error_message)
Index: django/newforms/fields.py
===================================================================
--- django/newforms/fields.py	(revision 5148)
+++ django/newforms/fields.py	(working copy)
@@ -260,10 +260,18 @@
             raise ValidationError(self.error_message)
         return value
 
+ADDR_SPEC = """
+((?:
+    [-!#$%&'*+/=?^_`{}|~0-9A-Z]+(?:\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)* # dot-atom
+)|(?:
+    "(?:[\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-011\013\014\016-\177])*" # quoted-string
+))@(
+    (?:[A-Z0-9-]+\.)+[A-Z]{2,6} #domain
+)
+"""
+
 email_re = re.compile(
-    r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*"  # dot-atom
-    r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-011\013\014\016-\177])*"' # quoted-string
-    r')@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}$', re.IGNORECASE)  # domain
+    "^(?:" + ADDR_SPEC + ")|(?:\w[\w ]*)<" + ADDR_SPEC + ">$", re.VERBOSE | re.IGNORECASE)
 
 class EmailField(RegexField):
     def __init__(self, max_length=None, min_length=None, *args, **kwargs):
Index: docs/model-api.txt
===================================================================
--- docs/model-api.txt	(revision 5148)
+++ docs/model-api.txt	(working copy)
@@ -189,7 +189,9 @@
 
 A ``CharField`` that checks that the value is a valid e-mail address.
 This doesn't accept ``maxlength``; its ``maxlength`` is automatically set to
-75.
+75. In addition to the expected ``joe.bloggs@some.domain.com`` address format,
+the field also accepts email addresses with display names, such as
+``Joe Bloggs <joe.bloggs@some.domain.com>``.
 
 ``FileField``
 ~~~~~~~~~~~~~
