From 6d5922ba891f5f0e37f6c70f16aae558f1a4063d Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Sun, 10 Nov 2019 22:56:15 -0500 Subject: Bug 1271353 - check own email addresses case-insensitively in correspondents column and ignore plus addressing part. Tag #1273 --- mailnews/base/src/nsMsgDBView.cpp | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'mailnews/base') diff --git a/mailnews/base/src/nsMsgDBView.cpp b/mailnews/base/src/nsMsgDBView.cpp index baad45ef5..76a843df7 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; } -- cgit v1.2.3