classification
Title: Index out of range in get of message.EmailMessage.get()
Type: behavior Stage: patch review
Components: email Versions: Python 3.6
process
Status: open Resolution: works for me
Dependencies: Superseder:
Assigned To: Nosy List: Michala, barry, r.david.murray, radar383
Priority: normal Keywords: patch

Created on 2017-09-13 09:53 by Michala, last changed 2018-05-14 20:06 by bfrosik.

Files
File name Uploaded Description Edit
_header_value_parser.py Michala, 2017-10-09 13:01
Pull Requests
URL Status Linked Edit
PR 6825 open radar383, 2018-05-14 19:47
PR 6828 open bfrosik, 2018-05-14 20:06
Messages (3)
msg302043 - (view) Author: (Michala) Date: 2017-09-13 09:53
This error occured when the email field "From" was demanded:

  File "/home/user/processing/Test/process_email.py", line 84, in __init__
    self.field_from_full = msg.get("From")
  File "/usr/local/lib/python3.6/email/message.py", line 471, in get
    return self.policy.header_fetch_parse(k, v)
  File "/usr/local/lib/python3.6/email/policy.py", line 162, in header_fetch_parse
    return self.header_factory(name, value)
  File "/usr/local/lib/python3.6/email/headerregistry.py", line 586, in __call__
    return self[name](name, value)
  File "/usr/local/lib/python3.6/email/headerregistry.py", line 197, in __new__
    cls.parse(value, kwds)
  File "/usr/local/lib/python3.6/email/headerregistry.py", line 337, in parse
    kwds['parse_tree'] = address_list = cls.value_parser(value)
  File "/usr/local/lib/python3.6/email/headerregistry.py", line 328, in value_parser
    address_list, value = parser.get_address_list(value)
  File "/usr/local/lib/python3.6/email/_header_value_parser.py", line 2336, in get_address_list
    token, value = get_address(value)
  File "/usr/local/lib/python3.6/email/_header_value_parser.py", line 2313, in get_address
    token, value = get_group(value)
  File "/usr/local/lib/python3.6/email/_header_value_parser.py", line 2284, in get_group
    if value[0] != ';':
IndexError: string index out of range

I used EmailPolicy, so the message object was instance of EmailMessage.
Header field "From" had following form: 
"From: Bonifac Karaka : bonikar@gmail.com"
msg303948 - (view) Author: (Michala) Date: 2017-10-09 13:01
I added 2 lines into the file "email/_header_value_parser.py"
into the function "get_mailbox_list(value)" before return value:

    if not value:
        value = ';'
    return mailbox_list, value


It is in attachments.
msg316565 - (view) Author: Randy Wong (radar383) * Date: 2018-05-14 19:47
Submitted pull request: 
fix-issue-31455: Changed by adding two lines in the module "email/_header_value_parser.py" into the function "get_mailbox_list(value)" before return mailbox_list, value to avoid IndexError.
History
Date User Action Args
2018-05-14 20:06:14bfrosiksetpull_requests: + pull_request6512
2018-05-14 19:47:22radar383setnosy: + radar383
messages: + msg316565
pull_requests: + pull_request6510

keywords: + patch
stage: patch review
2017-10-09 13:01:34Michalasetfiles: + _header_value_parser.py
resolution: works for me
messages: + msg303948
2017-09-13 09:53:21Michalacreate