diff options
author | Matt A. Tobin <email@mattatobin.com> | 2019-11-10 22:56:15 -0500 |
---|---|---|
committer | Matt A. Tobin <email@mattatobin.com> | 2019-11-10 22:56:15 -0500 |
commit | 6d5922ba891f5f0e37f6c70f16aae558f1a4063d (patch) | |
tree | 17b5bf885f9592bdfe8bcbd3ec9a2e03a0e8cdd9 /mailnews/base | |
parent | fa9ca98c398438edfd77b876f9e4b666cac4fdf9 (diff) | |
download | uxp-6d5922ba891f5f0e37f6c70f16aae558f1a4063d.tar.gz |
Bug 1271353 - check own email addresses case-insensitively in correspondents column and ignore plus addressing part.
Tag #1273
Diffstat (limited to 'mailnews/base')
-rw-r--r-- | mailnews/base/src/nsMsgDBView.cpp | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/mailnews/base/src/nsMsgDBView.cpp b/mailnews/base/src/nsMsgDBView.cpp index baad45ef5c..76a843df72 100644 --- a/mailnews/base/src/nsMsgDBView.cpp +++ b/mailnews/base/src/nsMsgDBView.cpp @@ -870,6 +870,24 @@ nsresult nsMsgDBView::FetchLabel(nsIMsgDBHdr *aHdr, nsAString &aLabelString) return NS_OK; } +/** + * Lowercase the email and remove a possible plus addressing part. + * E.g. John+test@example.com -> john@example.com. + */ +static void +ToLowerCaseDropPlusAddessing(nsCString& aEmail) +{ + ToLowerCase(aEmail); + int32_t indPlus; + if ((indPlus = aEmail.FindChar('+')) == kNotFound) + return; + int32_t indAt; + indAt = aEmail.FindChar('@', indPlus); + if (indAt == kNotFound) + return; + aEmail.ReplaceLiteral(indPlus, indAt - indPlus, ""); +} + bool nsMsgDBView::IsOutgoingMsg(nsIMsgDBHdr* aHdr) { nsString author; @@ -878,7 +896,7 @@ bool nsMsgDBView::IsOutgoingMsg(nsIMsgDBHdr* aHdr) nsCString emailAddress; nsString name; ExtractFirstAddress(DecodedHeader(author), name, emailAddress); - + ToLowerCaseDropPlusAddessing(emailAddress); return mEmails.Contains(emailAddress); } @@ -2340,12 +2358,16 @@ NS_IMETHODIMP nsMsgDBView::Open(nsIMsgFolder *folder, nsMsgViewSortTypeValue sor nsCString email; identity->GetEmail(email); - if (!email.IsEmpty()) + if (!email.IsEmpty()) { + ToLowerCaseDropPlusAddessing(email); mEmails.PutEntry(email); + } identity->GetReplyTo(email); - if (!email.IsEmpty()) + if (!email.IsEmpty()) { + ToLowerCaseDropPlusAddessing(email); mEmails.PutEntry(email); + } } return NS_OK; } |