我们最近从.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>
,这会导致它无法正确解码。
逗号用于分隔邮件地址列表中的元素。作为一个 结果,逗号不应该用在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 。
答案 0 :(得分:1)
没有测试,但尝试
MailAddress from = new MailAddress("joe@nospam.com", "Joe Smith\",\" CEO®");
编辑 - 另一种选择:
MailAddress from = new MailAddress("joe@nospam.com", "Joe Smith\x2C CEO®");