From: jaymin93 Date: Fri, 28 Aug 2020 18:21:27 +0000 (+0530) Subject: fixed issue 36752 mail address display name (#37874) X-Git-Tag: submit/tizen/20210909.063632~5718 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=65d294d8b2726a9344b80c395972631d3c564f36;p=platform%2Fupstream%2Fdotnet%2Fruntime.git fixed issue 36752 mail address display name (#37874) Co-authored-by: Marie Píchová <11718369+ManickaP@users.noreply.github.com> Co-authored-by: Karel Zikmund --- diff --git a/src/libraries/System.Net.Mail/src/System/Net/Mail/MailAddress.cs b/src/libraries/System.Net.Mail/src/System/Net/Mail/MailAddress.cs index 6155c05..d8a5d0c 100644 --- a/src/libraries/System.Net.Mail/src/System/Net/Mail/MailAddress.cs +++ b/src/libraries/System.Net.Mail/src/System/Net/Mail/MailAddress.cs @@ -257,7 +257,7 @@ namespace System.Net.Mail } else { - return "\"" + DisplayName + "\" " + SmtpAddress; + return "\"" + DisplayName.Replace("\"", "\\\"") + "\" " + SmtpAddress; } } diff --git a/src/libraries/System.Net.Mail/tests/Unit/MailAddressTests/MailAddressDisplayNameTest.cs b/src/libraries/System.Net.Mail/tests/Unit/MailAddressTests/MailAddressDisplayNameTest.cs index 0474801..acdc11f 100644 --- a/src/libraries/System.Net.Mail/tests/Unit/MailAddressTests/MailAddressDisplayNameTest.cs +++ b/src/libraries/System.Net.Mail/tests/Unit/MailAddressTests/MailAddressDisplayNameTest.cs @@ -20,6 +20,43 @@ namespace System.Net.Mail.Tests Assert.Equal(string.Format("\"{0}\" <{1}>", DisplayNameWithUnicode, Address), _mailAddress.ToString()); } + [Theory] + [InlineData(Address, "test\"Display\"Name")] + [InlineData(Address, "Hello \"world hello\" world")] + [InlineData(Address, "Hello \"world")] + [InlineData(Address, "Hello \"\"world")] + [InlineData(Address, "\"")] + [InlineData(Address, "Hello \\\"world hello\\\" world")] + public void MailAddress_WithDoubleQuotesDisplayAndMailAddress_ToStringShouldReturnEscapedDisplayNameAndAddressInAngleBrackets(string address, string displayName) + { + MailAddress mailAddress = new MailAddress(address, displayName); + Assert.Equal(displayName, mailAddress.DisplayName); + Assert.Equal(string.Format("\"{0}\" <{1}>", displayName.Replace("\"", "\\\""), address), mailAddress.ToString()); + } + + [Theory] + [InlineData(Address, "\"John Doe\"")] + [InlineData(Address, "\"\"")] + [InlineData(Address, "\"\"\"")] + [InlineData(Address, "\"John \"Johnny\" Doe\"")] + public void MailAddress_WithOuterDoubleQuotesDisplayAndMailAddress_ToStringShouldReturnEscapedDisplayNameAndAddressInAngleBrackets(string address, string displayName) + { + MailAddress mailAddress = new MailAddress(address, displayName); + displayName = displayName.Substring(1, displayName.Length - 2); + + Assert.Equal(displayName, mailAddress.DisplayName); + + if (string.IsNullOrEmpty(displayName)) + { + Assert.Equal($"{address}", mailAddress.ToString()); + } + else + { + Assert.Equal($"\"{displayName.Replace("\"", "\\\"")}\" <{address}>", mailAddress.ToString()); + } + } + + [Fact] public void MailAddress_WithNoDisplayName_AndOnlyAddress_ToStringShouldOutputAddressOnlyWithNoAngleBrackets() {