C# System.Net.Mail SmtpClient From DisplayName 小括號加中文會消失

DisplayName 設定 "Test Mail (測試信件)" 但收信時卻顯示 "Test Mail"

問題

MailMessage.From.DisplayName

有小括號 => 會被吃字

  • Test Mail (測試信件) => Test Mail
  • Test Mail (x測x試x信x件x) => Test Mail

沒小括號 => 沒問題

  • Test Mail 測試信件 => Test Mail 測試信件

改用全形括號 => 沒問題

  • Test Mail(測試信件) => Test Mail(測試信件)

有小括號沒中文 => 沒問題

  • Test Mail (xxx) => Test Mail (xxx)

測試

[Fact]
public async Task Should_Get_Chinese_From_Mail()
{
    // Arrange
    const string displayName = "Test (x測x試x)";
    
    var mail = new MailMessage
    { 
        Subject = "測試小括號中文",
        Body = "有括號時中文會被消失",
        From = new MailAddress(
            "jakeuj@hotmail.com", displayName, Encoding.UTF8)
    };
    
    mail.To.Add("jakeuj@gmail.com");
    
    //Act
    using (var smtpClient = new SmtpClient("smtp.gmail.com", 587)
           {
               UseDefaultCredentials = false,
               EnableSsl = true,
               //這裡要填正確的帳號跟密碼
               Credentials = new NetworkCredential("apikey", "apikeyvalue")
           })
    {
        await smtpClient.SendMailAsync(mail);
    }

    //Assert
    _testOutputHelper.WriteLine(displayName);
    displayName.ShouldNotBeNull();
}

結論

iis - How to send email locally in .net core without credentials - Stack Overflow

耕作筆記本: [筆記] .Net SmtpClient 發出的信,特定中文寄件人在特定收信軟體上亂碼問題 (jumping-fun.blogspot.com)

參照

用C#寄Gmail信(純後端) - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天 (ithome.com.tw)

原來 System.Net.Mail 也會有 Bug ... — 安德魯的部落格 (chicken-house.net)

PS5