New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Faulty behaviour in email.utils.parseaddr if square brackets in subject #76239
Comments
Probably a parsing bug in email.utils.parseaddr. How to recreate: >>> import email.utils
>>> test = 'Subject: I am a bug [Random]\r\nFrom: someone <some@email.address>\r\n\r\n'
>>> email.utils.parseaddr(test)
('', 'I')
>>> email.utils.parseaddr(test.replace('[', '').replace(']',''))
('someone', 'some@email.address') Expected behaviour: no need to remove the []'s |
parseaddr is for parsing the contents of an address header, not for parsing any additional text. So the correct way to call it is parseaddress('someone <some@email.address>'). In any case, please look in to the new email policies, which provide a much more convenient API: >>> from email import message_from_bytes
>>> from email.policy import default
>>> m = message_from_bytes(b'Subject: I am a bug [Random]\r\nFrom: someone <some@email.address>\r\n\r\n', policy=default)
>>> m['from']
'someone <some@email.address>'
>>> m['from'].addresses
(Address(display_name='someone', username='some', domain='email.address'),)
>>> m['from'].addresses[0].display_name
'someone'
>>> m['from'].addresses[0].username
'some'
>>> m['from'].addresses[0].addr_spec
'some@email.address' |
I do get this data from an IMAP fetch statement, see my code below:
sender_subject = data[0][1].decode("utf-8")
sender = email.utils.parseaddr(sender_subject.replace('[', '').replace(']',''))[1].replace("\r\n", "") Thank you for providing this new API though, I will make sure to switch to that. |
Unfortunately the imap module in the stdlib doesn't provide a whole lot in the way of tools for parsing the imap data, just for sending it back and forth to the server. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: