我使用 .NET SmtpClient 和 MailMessage 发送电子邮件,尽管当我在 MS Office Outlook(桌面版)中接收电子邮件时,显示名称似乎无法处理带重音的 Unicode 字符。 正文、主题和一切似乎都很好,除了显示名称。有趣的是,如果我向 Gmail 或 Outlook 发送电子邮件,显示名称也很好。 我知道它可以是电子邮件服务器,但如果我将来自其他提供商的电子邮件发送到我的 Outlook,它就可以工作。
是否有任何配置或解决方案可以解决此问题?我的相关代码:
MailMessage m_Msg = new MailMessage();
SmtpClient smtpClient = new SmtpClient();
m_Msg.From = new mailaddress(FromAddress,FromName,System.Text.Encoding.UTF8 /*Tried with System.Text.Encoding.Unicode,does not work*/);
m_Msg.Subject = Subject;
m_Msg.Body = Body;
m_Msg.IsBodyHtml = true;
m_Msg.Priority = MailPriority.Normal;
smtpClient.Host = SMTPServer;
smtpClient.Port = SMTPPort;
smtpClient.EnableSsl = SMTPEnableSSL;
smtpClient.Credentials = new NetworkCredential(SMTPusername,SMTPPassword);
smtpClient.Timeout = 20000;
smtpClient.SendCompleted += new SendCompletedEventHandler(EMailSending_OnCompleted);
//m_Msg.BodyEncoding = System.Text.Encoding.UTF8; // Tried,not working
//m_Msg.HeadersEncoding = System.Text.Encoding.UTF8; // Tried,not working
//m_Msg.SubjectEncoding = System.Text.Encoding.UTF8; // Tried,not working
smtpClient.DeliveryFormat = SmtpDeliveryFormat.International;
smtpClient.SendAsync(m_Msg,m_Msg);