This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: email.message.EmailMessage address parser fails to handle 'example@'
Type: behavior Stage: patch review
Components: email Versions: Python 3.9
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: barry, python-dev, r.david.murray, user34926
Priority: normal Keywords: patch

Created on 2020-06-10 19:05 by user34926, last changed 2022-04-11 14:59 by admin.

Pull Requests
URL Status Linked Edit
PR 20790 open python-dev, 2020-06-10 19:12
Messages (1)
msg371234 - (view) Author: Ivan Savin (user34926) * Date: 2020-06-10 19:05
How to reproduce:

>>> import email.message
>>> message = email.message.EmailMessage()
>>> message['From'] = 'hey@'
Traceback (most recent call last):
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/_header_value_parser.py", line 1956, in get_address
    token, value = get_group(value)
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/_header_value_parser.py", line 1914, in get_group
    raise errors.HeaderParseError("expected ':' at end of group "
email.errors.HeaderParseError: expected ':' at end of group display name but found '@'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/_header_value_parser.py", line 1782, in get_mailbox
    token, value = get_name_addr(value)
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/_header_value_parser.py", line 1768, in get_name_addr
    token, value = get_angle_addr(value)
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/_header_value_parser.py", line 1693, in get_angle_addr
    raise errors.HeaderParseError(
email.errors.HeaderParseError: expected angle-addr but found '@'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/message.py", line 409, in __setitem__
    self._headers.append(self.policy.header_store_parse(name, val))
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/policy.py", line 148, in header_store_parse
    return (name, self.header_factory(name, value))
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/headerregistry.py", line 596, in __call__
    return self[name](name, value)
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/headerregistry.py", line 191, in __new__
    cls.parse(value, kwds)
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/headerregistry.py", line 334, in parse
    kwds['parse_tree'] = address_list = cls.value_parser(value)
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/headerregistry.py", line 325, in value_parser
    address_list, value = parser.get_address_list(value)
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/_header_value_parser.py", line 1979, in get_address_list
    token, value = get_address(value)
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/_header_value_parser.py", line 1959, in get_address
    token, value = get_mailbox(value)
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/_header_value_parser.py", line 1785, in get_mailbox
    token, value = get_addr_spec(value)
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/_header_value_parser.py", line 1638, in get_addr_spec
    token, value = get_domain(value[1:])
  File "/home/ivan/.pyenv/versions/3.9.0a5/lib/python3.9/email/_header_value_parser.py", line 1595, in get_domain
    if value[0] in CFWS_LEADER:
IndexError: string index out of range
History
Date User Action Args
2022-04-11 14:59:32adminsetgithub: 85116
2020-06-10 19:12:53python-devsetkeywords: + patch
nosy: + python-dev

pull_requests: + pull_request19985
stage: patch review
2020-06-10 19:05:28user34926create