当有逗号时,为什么MailAddress不引用DisplayName?

时间:2011-08-16 12:22:15

标签: c# .net-4.0

我们最近从.NET 2迁移到.NET 4,而System.Net.Mail.MailAddress类让我很头疼。以前,如果我有电子邮件(joe@example.com)和显示名称(Joe Smith,CEO®),您可以这样做:

MailAddress from = new MailAddress("joe@example.com", "Joe Smith, CEO®");

通过电子邮件发送时,您可以获得格式正确的"Joe Smith, CEO" <joe@example.com>。这是可见/可读/等。所有邮寄者。

使用.NET 4 Outlook / Exchange正在考虑如何对其进行编码,将其拆分为逗号:<=?utf-8?Q?Joe@gwm.example.com>, CEO=C2=AE?= <joe@example.com>,这会导致它无法正确解码。

From Microsoft

  

逗号用于分隔邮件地址列表中的元素。作为一个   结果,逗号不应该用在a中的不带引号的显示名称中   名单。

哪个好,但是当你这样做时:

MailAddress from = new MailAddress("joe@example.com", "\"Joe Smith, CEO®\"");

报价被剥离是因为;

  

此方法删除未显示的周围引号   DisplayName属性。

那么如何告诉MailAddress不应该引用所需的逗号,而不添加额外的空格(例如“\ u200B \”Joe ... \“”)在邮件阅读器中使地址缩进?

更新

微软的答案(见链接的回复评论):

  

Microsoft于2011年8月17日发布 - 感谢您的支持   反馈。这是一个众所周知的问题,目前正在发布补丁   为.NET 4.0创建。要获得此修补程序,请与Microsoft联系   直接支持 KB 2576045

1 个答案:

答案 0 :(得分:1)

没有测试,但尝试

 MailAddress from = new MailAddress("joe@nospam.com", "Joe Smith\",\" CEO®");

编辑 - 另一种选择:

 MailAddress from = new MailAddress("joe@nospam.com", "Joe Smith\x2C CEO®");