notmuch/bindings/python/notmuch
Florian Klink 91fe20cd90 python: open messages in binary mode
currently, notmuch's get_message_parts() opens the file in text mode and passes
the file object to email.message_from_file(fp). In case the email contains
UTF-8 characters, reading might fail inside email.parser with the following exception:

  File "/usr/lib/python3.6/site-packages/notmuch/message.py", line 591, in get_message_parts
    email_msg = email.message_from_binary_file(fp)
  File "/usr/lib/python3.6/email/__init__.py", line 62, in message_from_binary_file
    return BytesParser(*args, **kws).parse(fp)
  File "/usr/lib/python3.6/email/parser.py", line 110, in parse
    return self.parser.parse(fp, headersonly)
  File "/usr/lib/python3.6/email/parser.py", line 54, in parse
    data = fp.read(8192)
  File "/usr/lib/python3.6/codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in position 1865: invalid continuation byte

To fix this, read file in binary mode and pass to
email.message_from_binary_file(fp).

Unfortunately, Python 2 doesn't support
email.message_from_binary_file(fp), so keep using
email.message_from_file(fp) there.

Signed-off-by: Florian Klink <flokli@flokli.de>
2017-10-02 07:21:33 -03:00
..
__init__.py Use https instead of http where possible 2016-06-05 08:32:17 -03:00
compat.py Use https instead of http where possible 2016-06-05 08:32:17 -03:00
database.py python: deprecated add_message calls index_file correctly and returns result 2017-09-12 15:21:40 -03:00
directory.py database: add n_d_index_file (deprecates n_d_add_message) 2017-08-23 07:38:37 -03:00
errors.py Use https instead of http where possible 2016-06-05 08:32:17 -03:00
filenames.py Use https instead of http where possible 2016-06-05 08:32:17 -03:00
globals.py Use https instead of http where possible 2016-06-05 08:32:17 -03:00
message.py python: open messages in binary mode 2017-10-02 07:21:33 -03:00
messages.py Use https instead of http where possible 2016-06-05 08:32:17 -03:00
query.py lib: replace deprecated n_q_count_threads with status returning version 2017-03-22 08:35:07 -03:00
tag.py Use https instead of http where possible 2016-06-05 08:32:17 -03:00
thread.py Fix orthography 2017-07-18 06:50:44 -03:00
threads.py Use https instead of http where possible 2016-06-05 08:32:17 -03:00
version.py version: bump to 0.25.1 2017-09-11 22:19:46 -03:00