C# 使用德语umlauts和名称中的逗号时显示错误的电子邮件收件人

C# 使用德语umlauts和名称中的逗号时显示错误的电子邮件收件人,c#,email,smtp,diacritics,mailmessage,C#,Email,Smtp,Diacritics,Mailmessage,使用in.NET4,我今天发现了一个至今无法解决的问题。请参阅以下代码: 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 sc

使用in.NET4,我今天发现了一个至今无法解决的问题。请参阅以下代码:

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);
}
这是一个简单的代码片段,因此请发送SMTP消息。相互尝试行
/*1*/
/*2*/
/*3*/
,行为不同:

每当收件人(“收件人”)姓名中包含德语umlaut(即“Ä”、“Ö”或“Ü”)和逗号(即“,”)时,收件人会在收到的电子邮件中看到损坏的文本:

正如您在上面的屏幕截图(取自Outlook 2010)中所看到的,在“收件人:”行中有一个神秘的“=?utf-8?Q?M=C3=BCller”

省略逗号或删除德语umlaut可以解决这一问题。我尝试了Exchange2003和hmailserver以获得相同的结果

我的问题是:

是否有人意识到这种行为并有解决方案

更新1:

按照用户的建议,我在发送电子邮件时启动了Microsoft网络监视器

在我看来,
MailMessage
类(或
SmtpClient
类?)似乎已经做错了:


电子邮件头必须是美国ascii码(7位),使用umlauts需要编码,如rfc2047所述。有不同的方式编码字符串,看起来outlook或您的邮件服务器无法理解utf8编码

您可以尝试使用iso-8859-1对地址进行mime编码

编辑:我刚刚在


您是否尝试过使用MailAddress(字符串、字符串、编码)?

因此,经过一些挖掘,我发现了Microsoft支持文章2576045:


在写出包含Unicode字符的地址时,
MailMessage
类似乎没有正确编码某些内容。我当然不能根据KB文章的信息告诉你它是什么,但不管它是什么,它足以让下游读者被标题噎住。

我们实际上也有类似的问题。不过主要是关于这个主题。 正确方向上的一个步骤是MailMergeLib:

你可以试一试,但这并不能解决我们所有的问题。现在我们切换到Aspose.Email。它更好,但仍然不完美,我们仍然有装饰主题,但现在只在Mac和iPhone上,但他们正在进行错误修复

你可以免费试用。网络上还有其他电子邮件库。


如果你能想出更多的办法,我会很感兴趣的

你能在发送和接收时转储并查看实际的邮件消息,以查找两种显示名称格式的差异吗?@AdamMaras对于收件人,我已经这样做了,这是错误的。对于发送部分,我如何才能做到这一点?在邮件服务器中跟踪从我的应用程序接收到什么?或者使用类似Fiddler的东西查看应用程序写入连接的内容。谢谢,Bastian,不幸的是,这没有帮助。不过,谢谢你的提示!谢谢,Adam,我刚刚用Microsoft Network Monitor的结果更新了我的问题。是的,这似乎与KB文章(以及我读到的关于人们使用它的经验的所有内容)一致,因此我建议尝试修补程序。修补程序在我的客户机上工作得很好,现在在服务器上尝试。非常感谢,亚当!没问题,朋友。:)尽管我们都被教导,当我们遇到问题时,几乎从来都不是平台的错。。。有时,平台实际上出现了故障(无论多么罕见)。也在服务器上工作。我很高兴:-)