feat(fetch): support X-GM-THRID, X-GM-MSGID, X-GM-LABELS in FetchParser#275
Merged
Conversation
Member
|
Thanks for your contribution and sorry for the long response time! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📌 Description
This update enhances the IMAP fetch parsing by adding support for Gmail-specific extensions:
X-GM-THRID → Gmail thread ID
X-GM-MSGID → Gmail unique message ID
X-GM-LABELS → Gmail labels associated with the message
These fields are now parsed directly within the FetchParser, making them available alongside standard IMAP attributes.
🚀 Motivation
Gmail provides additional metadata that is not part of the standard IMAP specification but is essential for building a modern email client:
Thread grouping (conversation view)
Reliable message identification across folders
Label-based organization (instead of traditional folders)
Previously, this data was not accessible through the parser, limiting Gmail-specific functionality.
🔧 Changes
⚠️ Notes
Extended FetchParser to recognize and extract:
X-GM-THRID
X-GM-MSGID
X-GM-LABELS
Properly map parsed values into the fetch result structure
Ensure backward compatibility with non-Gmail IMAP servers
✅ Impact
Enables proper threading support (conversation view)
Improves message deduplication and syncing
Allows accurate label synchronization for Gmail accounts
No breaking changes for existing IMAP functionality
These fields are Gmail-specific and may not be present in other IMAP providers
Consumers should handle null/absence cases gracefully
🧪 Testing
Verified against Gmail IMAP (imap.gmail.com)
Tested parsing of:
Messages with multiple labels
Threaded conversations
Standard IMAP responses (non-Gmail) to ensure no regression