C# 为什么';当有逗号时,MailAddress是否引用DisplayName?
我们最近从.NET 2迁移到了.NET 4,System.NET.Mail.MailAddress类让我头疼。以前,如果我有电子邮件(joe@example.com)和显示名(Joe Smith,CEO®),您可以执行以下操作:C# 为什么';当有逗号时,MailAddress是否引用DisplayName?,c#,.net-4.0,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”。所有邮寄者都可以查看/阅读/等 在.NET 4
MailAddress from = new MailAddress("joe@example.com", "Joe Smith, CEO®");
当您通过电子邮件发送时,您会收到格式正确的“Joe Smith,CEO”
。所有邮寄者都可以查看/阅读/等
在.NET 4中,Outlook/Exchange对其编码方式进行了调整,在逗号处将其拆分:,CEO=C2=AE?=
,这会导致无法正确解码
:
逗号用于分隔邮件地址列表中的元素。作为一个
因此,不应在中的无引号显示名称中使用逗号
名单
这很好,但是当你这样做的时候:
MailAddress from = new MailAddress("joe@example.com", "\"Joe Smith, CEO®\"");
引用被删除是因为
此方法删除未显示的周围引号
DisplayName属性
那么,如何告诉MailAddress它不需要的逗号应该被引用,而不添加额外的空格(例如“\u200B\”Joe…\”),使地址在邮件阅读器中缩进
更新
Microsoft的回答(请参阅链接的回复评论):
微软于2011年8月17日发布——感谢您的支持
反馈这是一个众所周知的问题,目前正在开发修补程序
为.NET4.0创建。要获取修补程序,请与Microsoft联系
直接支持关于KB 2576045
没有测试,但尝试了一下
MailAddress from = new MailAddress("joe@nospam.com", "Joe Smith\",\" CEO®");
编辑-另一个选项: MailAddress from = new MailAddress("joe@nospam.com", "Joe Smith\x2C CEO®");
“(在提出这个问题时,没有任何实时数据受到损害)”->为什么人们不简单地使用。每个非示例地址都可能是、成为或曾经是有效地址。偏执狂程序员应该知道并尊重这一点。@phresnel感谢您的链接,但他没有意识到这一点。更新了我的帖子。差不多了!在outlook中看起来不错,Joe Smith,CEO…;在Gmail中看起来很笨拙,Joe Smith”,“CEO…不走运,我也试过了。任何逗号、Unicode或十六进制都会出现问题。如果MS有问题,请告诉用户使用“-”而不是“,“在显示名称中,或者只关心Outlook的收件人:-),我们将看到发生了什么。解决方法是执行
“\”Joe Smith,…\”
或“\”Joe Smith,…\”
——额外的空间会使引号重新插入。