﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
27469	Email crashes cryptically when emptystring passed to django.core.mail.message.sanitize_address	Jarek Glowacki	nobody	"
{{{
In [10]: sanitize_address('', 'utf-8')
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-10-ad3601147d6a> in <module>()
----> 1 sanitize_address('', 'utf-8')

/usr/local/lib/python3.5/site-packages/django/core/mail/message.py in sanitize_address(addr, encoding)
    159
    160     try:
--> 161         address = Address(nm, addr_spec=addr)
    162     except (InvalidHeaderDefect, NonASCIILocalPartDefect):
    163         localpart, domain = split_addr(addr, encoding)

/usr/local/lib/python3.5/email/headerregistry.py in __init__(self, display_name, username, domain, addr_spec)
     40                 raise TypeError(""addrspec specified when username and/or ""
     41                                 ""domain also specified"")
---> 42             a_s, rest = parser.get_addr_spec(addr_spec)
     43             if rest:
     44                 raise ValueError(""Invalid addr_spec; only '{}' ""

/usr/local/lib/python3.5/email/_header_value_parser.py in get_addr_spec(value)
   1986     """"""
   1987     addr_spec = AddrSpec()
-> 1988     token, value = get_local_part(value)
   1989     addr_spec.append(token)
   1990     if not value or value[0] != '@':

/usr/local/lib/python3.5/email/_header_value_parser.py in get_local_part(value)
   1798     local_part = LocalPart()
   1799     leader = None
-> 1800     if value[0] in CFWS_LEADER:
   1801         leader, value = get_cfws(value)
   1802     if not value:

IndexError: string index out of range
}}}

Could we reraise some more intuitive error back to the user for this case?

A single `@` symbol also raises an exception for this method, but at least it yields a more meaningful error that the dev can track down:
`HeaderParseError: Expected 'atom' or 'quoted-string' but found '@'`
Though maybe this could be beefed up to something nicer also.
"	Bug	closed	Core (Mail)	dev	Normal	fixed	sanitize_address mail		Ready for checkin	1	0	0	0	1	0
