On 16May2017 16:14, Yubin Ruan <ablacktsh...@gmail.com> wrote:
On Sun, May 14, 2017 at 09:33:46AM +1000, Cameron Simpson wrote:
The other common solution for IMAP mail accounts is offlineimap, which will
mirror IMAP accounts to local storage.
[...]
Yes offlineimap _is_ very tricky to setup. It cannot handle non-ascii characters correctly. I have several folders on the Gamil server whose name is in Chinese.
I setup a `nametrans' in the .offlineimaprc:
   nametrans = lambda foldername: 
foldername.decode('imap4-utf-7').encode('utf-8')

You also have a reverse name trans, yes? Both are needed. And one should take care that they really are the reverse of each other.

it works great in the first download, but will throw some encoding/decoding 
errors
in the sync afterwards:
'ascii' codec can't decode byte 0xe9 in position 8: ordinal not in range(128)

I don't know why a software would only support ascii in the 21st century...

The offlineimap authors are definitely not pure Western can-get-by-with-ASCII people, so I expect they're aware of this shortcoming.

Is imap4-utf-7 a known encoding? My local Python 3 says:

 % python3 -c 'print(repr(b"foo".decode("imap4-utf-7")))'
 Traceback (most recent call last):
   File "<string>", line 1, in <module>
   LookupError: unknown encoding: imap4-utf-7

It is possible that your exception above comes from another part of the code; what is the stack trace? It would also be useful to hack things to print the repr of the undecodable string: do you know it is a mailbox name?

IIRC offlineimap uses python 2, which is a bit vague in distinguishing strings and bytes.

Cheers,
Cameron Simpson <c...@zip.com.au>

Reply via email to