Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gmail labels #82

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open

Gmail labels #82

wants to merge 6 commits into from

Conversation

scbash
Copy link

@scbash scbash commented Nov 3, 2016

Per discussion in #6, here is an implementation of converting IMAP keywords to GMail labels. I've tested it on about a year's worth of my corporate email (~3k messages), moving from Zimbra to GMail (really GSuite) which contained about 20 unique tags. That process made me add an --excludetags option to skip porting some of Zimbra's internal IMAP keywords (second commit on this branch). I also tested that Zimbra (the IMAP server I have easy access to) doesn't barf too badly if I attempt to use the X-GM-LABELS command (it simply rejects it as an invalid store command but allows the client to continue issuing other commands).

I have attempted to match the coding style of the existing code, but let me know if I missed anything really important...

Possibly useful reference material:

Thunderbird, Zimbra, and possibly other IMAP clients store user
specified tags in IMAP keywords ("flags that don't start with
backslash").  GMail simply ignores these keywords (it will store them
but otherwise doesn't use them), but using a GMail-specific IMAP
extension [1] it's possible to add GMail labels to any message.  After
uploading each message to the new server look for IMAP keywords and use
GMail's X-GM-LABELS extension to convert the keywords to labels.

[1] https://developers.google.com/gmail/imap_extensions#access_to_gmail_labels_x-gm-labels
In my own conversion from Zimbra to GMail there were several non-user
keywords that I assume Zimbra was using internally such as $Forwarded,
Forwarded (yes, both with and without the $), and $MDNSent.  Following
the folder exclude model, add a --excludetags option that accepts a
regex of tags (IMAP keywords) to not convert to GMail labels.
@gilleslamiral gilleslamiral self-assigned this Sep 2, 2018
@gilleslamiral gilleslamiral added Gmail Gmail issues Flags Flags issues labels Sep 2, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Flags Flags issues Gmail Gmail issues
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants