Issue 11050: email.utils.getaddresses behavior contradicts RFC2822 (original) (raw)
The pre 3.3 email package does not do any header unfolding. You can make this work by doing the header unfolding before passing it to getaddresses:
email.utils.getaddresses([''.join(m['to'].splitlines())]) [('A (B)', 'c@d.org'), ('', 'd@e.org')]
The new provisional policy that was just added to 3.3 (which will eventually become the standard interface) does do the unfolding before parsing the addresses, so it does not have this issue. In 3.3 we now have this:
import email from email.policy import SMTP m = email.message_from_string("To: "A\r\n (B)" <c@d.org>, (A\r\n C) <d@e.org>\r\nSubject: test\r\n\r\nbody", policy=SMTP) m['to'].addresses (Address(display_name='A (B)', username='c', domain='d.org'), Address(display_name='', username='d', domain='e.org'))