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

Created on 2017-09-13 09:53 by Michala, last changed 2017-10-09 13:01 by Michala.

Files
File name Uploaded Description Edit
_header_value_parser.py Michala, 2017-10-09 13:01
Messages (2)
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.
History
Date User Action Args
2017-10-09 13:01:34Michalasetfiles: + _header_value_parser.py
resolution: works for me
messages: + msg303948
2017-09-13 09:53:21Michalacreate