imap-cli
imap-cli copied to clipboard
When piping imapcli output, an exception is raised if emails contain …
This will typically fail with imapcli:
$ imapcli search --date 2019-04-01 | less
It will throw an exception, something like this:
Traceback (most recent call last):
File "/usr/local/bin/imap-cli-search", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python2.7/dist-packages/imap_cli/search.py", line 484, in main
sys.stdout.write(text)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 5: ordinal not in range(128)
When piping imapcli output, an exception is raised if emails contain non-8-bit characters. This usually does NOT happen during regular usage with a fairly smart terminal, only during pipe usage. The reason is that stdout, the device usually used for output, by default just expects non-encoded 8-bit character data.
This patch fixes this by explicitly encoding everyting into utf-8 before it is being written to stdout.
(See also this thread on SO: https://stackoverflow.com/questions/15740236/stdout-encoding-in-python )
Cheers