For clarification, how does eM Client thread separate messages into a conversation? Does it rely on the References or In-Reply-To header that has the Message-ID (MID) headers from multiple messages tracking the hierarchy for threading?
The Subject header cannot be used for threading messages into a conversation. You could have multiple senders saying the same thing in the Subject header, or the same sender saying the same thing in the Subject, but the body of their message relates to a different prior message. The References header is used both in e-mail and Usenet to track the threading of messages by their MIDs.
https://www.rfc-editor.org/rfc/rfc1036
Section 2.2.5 - References
I know the References header tracks the threading in a conversation. Does eM Client employ any other criteria to group messages into a conversation?
There can be a problem using the References header. By RFC norm, it must be less than 998 characters long, but I’m not sure that restriction is per physical line, or across all continuation lines. In any case, any client would have a maximum that it could parse to track and construct hierarchy in the threading. When discussions get long, and the hierarchy gets deep, the References header gets truncated. The first (original) message’s MID is retained, and the last X MIDs are retained, but the N+1 to X-1 MIDs may get deleted (truncated) to keep the References header under the maximum length.
I’ve seen trolls deliberately use excessively long MIDs trying to break apart the threading. I’ve dealt with users whose client (usually a webmail client, or web-based forum sending e-mails) doesn’t add the References header. I get an e-mail. My reply has the References header. However, when they reply, there is no References header in their message, so threading gets broke. Their reply appears as a new thread as though it were the first or originating message.
I know how the References header gets used for threading. I think the In-Reply-To header evolved to perform the identical threading purpose of the References header. Does eM Client employ anything else in attempting to thread together multiple messages into a conversation?
I did search here on “conversations”, but no one asked just how eM Client constructs conversations. Threading by the References header is the norm. Threading by Subject is prone to mixing unrelated messages into the same conversation. Other clients use References to thread messages into a conversation. What does eM Client use to construct threads aka conversations?
Will eM Client’s conversations include messages in any folder, like the Trash folder? There are times when I want a conversation tracked to included deleted messages for completeness, but often I want to exclude the Trash folder (I deleted them, so don’t want them in the conversation anymore).
Note: I went to FAQ - Getting Started | Frequently Asked Questions | Support, clicked on the search icon (magnifier glass), but the input textbox was dead. I could not enter anything on which to search, so I couldn’t search on “conversation” to check if the online help mentions how eM Client builds conversations. So, I tried an external search into the web site using:
https://www.google.com/search?q=site%3Ahttps%3A%2F%2Fwww.emclient.com%2F%20conversation
which found:
https://www.emclient.com/blog/conversations-188
which said:
- In short, eM Client selects messages with the same subject and sorts them into one thread.
Ouch. Threading by Subject is fraught with false positives. That is the ancient way to thread before the References header was defined back in 1982 per RFC 822.
I was going to switch to Conversation view not because I prefer it, but because it might address another need to group related messages by instead grouping related conversations (for which, so far, I’ve only discerned would require assigning tags to use the left pane Tag → tagname to show conversations with the selected tagname). I wanted to determine how reliable is conversation threading in eM Client, and, if possible, restrict it to only using the headers, and not making guesses.
The above blog describes other criteria in attempting to build conversations other than just by Subject. While MID headers are mentioned, the References header for threading the MIDs together is not mentioned. Without using the References header, the algorithm to build conversations seems a bit too, um, loose. All those guesses seem a poor substitute to using the References header, but might help in those cases where a sender’s client didn’t add the References header in a reply, or the thread was so deep as to cause truncation of the References header.
If the References header exists in a message, it should be used alone for threading. Only if the References header is missing from a message, and the “RE:” prefix (indicating a reply message) is present in the Subject header, should eM Client guess to with which other messages this one should get threaded into a conversation. There will be no References header and no “RE:” in the Subject on the original or starter message, only in reply messages.
(References|In-Reply-To) header absent AND subject starts with "re:" then guess
Alas, not everyone replying adds the “RE:” prefix starting after any leading whitespace characters in their Subject header. They may be missing the References or In-Reply-To header, too. I’d rather not have those replies thrown into a conversation, but have them shown separate. No guessing, please.
In addition to References, the Reply-To and In-Reply-To headers can indicate how to thread messages into a conversation, but the above blog doesn’t mention using those headers. I think the In-Reply-To header duplicates the same thread tracking as the References header. Reply-To is to where a sender wants a reply get sent, and may not be the same as the From, Sender, or other headers indicating who was the sender, so Reply-To doesn’t provide reliable threading. Other than References and In-Reply-To, there doesn’t seem a reliable means of threading messages into a conversation.
Does eM Client have an option either in its config screens, or an advanced account setting as an argument string, to only use the References or In-Reply-To headers, if present, to thread together messages into a conversation? I’d rather have replies missing the References or In-Reply-To headers get orphaned outside of any conversation than get unrelated messages mixed together and hidden in the wrong conversation. I’d prefer a safe scheme where eM Client uses the headers to build conversations, and use nothing else to guess.