Uwe*_*eim 8 c# email smtp diacritics mailmessage
使用.NET 4中的MailMessage
类,我今天发现了一个问题,到目前为止我无法解决.请参阅以下代码:
using (var message = new MailMessage())
{
message.From = new MailAddress(@"uwe.keim@gmail.com", "Uwe Keim");
message.Bcc.Add(new MailAddress(@"uk@zeta-software.de", "Uwe Keim"));
// This fails (see screenshot).
/*1*/ message.To.Add(new MailAddress(@"uk2@zeta-sw.net", "Müller, Fred"));
// This succeeds.
/*2*/ message.To.Add(new MailAddress(@"uk2@zeta-sw.net", "Fred Müller"));
// This also succeeds.
/*3*/ message.To.Add(new MailAddress(@"uk2@zeta-sw.net", "Muller, Fred"));
message.Subject = "Test";
message.Body = "Some text body.";
new SmtpClient().Send(message);
}
Run Code Online (Sandbox Code Playgroud)
这是一个简单的片段,因此发送SMTP邮件.相互努力的线/*1*/
,/*2*/
并且/*3*/
,该行为不同:
每当接收者("To")名称包含德语变音符号(即"Ä","Ö"或"Ü")和逗号(即",")时,接收者会在收到的电子邮件中看到损坏的文本:
正如您在上面的截图(摘自Outlook 2010)中所看到的,"To:"行中有一个神秘的"=?utf-8?Q?M = C3 = BCller".
留下逗号或删除德语变音符号就可以解决这个问题.我已经尝试过Exchange 2003和hmailserver来获得相同的结果.
我的问题是:
有人知道这种行为并有解决方案吗?
更新1:
正如用户Adam Maras所建议的那样,我在发送电子邮件时启动了Microsoft Network Monitor.
对我来说,似乎MailMessage
班级(或SmtpClient
班级?)已经做错了:
因此,经过一番挖掘,我发现了 Microsoft 支持文章 2576045:修复:如果名称包含非 ASCII 字符,电子邮件客户端不支持由 .NET Framework 4 中的类编码的传递地址字段中的名称MailMessage
。
看来,当写出包含 Unicode 字符的地址时,该类MailMessage
未正确编码某些内容。我当然无法根据知识库文章的信息告诉你它是什么,但无论它是什么,都足以让下游读者被标题噎住。
归档时间: |
|
查看次数: |
2297 次 |
最近记录: |