问候。
我在这里查看了一些其他问题条目,例如this one,但找不到与我相同的问题。也许这里的古茹曾经历过类似的事情。
基本上,我正在创建一个ASP.NET 2.0 Web应用程序,有时需要发送电子邮件(使用System.Net.Mail),而且我遇到了奇怪且不一致的行为。
Encoding.UTF8
)
标题(MailAddress
对象已创建)。显示名称
总是一个字,其中包含一个
非ASCII字符。MailAddress
和
MailAddressCollection
个对象
在他们称之为共同方法之前
使用诸如from,to之类的参数
主体,身体(反过来
实际上使用传输消息
一个MailMessage
对象和一个
SmtpClient
对象)。以下是正确编码的From字段的示例:
来自:=?utf-8?B?QnJ1a2Vyc8O4a25hZA ==?=< munged@munged.tld>
以下是根本未编码的From字段的示例:
来自:“Brukers knad”< munged@munged.tld>
顺便说一下,非ASCII字符应该是“ø”。
以下是为From创建MailAddress
对象的代码行(对于无法编码此字段的消息类型:
mailSender = new MailAddress(Settings.SettingFromDB.Email_SenderAddress,
Settings.SettingFromDB.Email_SenderName, Encoding.UTF8);
同样,这是一行代码(对于相同类型的消息)为To创建MailAddress
对象(唯一的区别是它使用MailAddressCollection
):
mailTo = new MailAddressCollection();
mailTo.Add(new MailAddress(objSøknad.Creator.Email, objSøknad.Creator.FullName,
Encoding.UTF8));
最后但并非最不重要的是,这里是为From创建一个MailAddress
对象的行,其中所有字段总是正确编码(它与上面的相同) !):
mailSender = new MailAddress(Settings.SettingFromDB.Email_SenderAddress,
Settings.SettingFromDB.Email_SenderName, Encoding.UTF8);
主题始终以相同的方式编码(Encoding.UTF8
),生成MailMessage
对象并对主体进行编码的方法始终相同(对所有消息调用的常用方法)。并且,正确编码的标头始终在所有消息中进行base64编码(不是quoted-printable)。
答案 0 :(得分:1)
创建一个文件夹并让代码将消息发送到该文件夹。接下来,双击它以使其在Outlook中显示该消息。较旧版本的Outlook可能无法正确显示该项目,但Outlook 2010可能会。对于每个Outlook版本中启用了unicode的字段,它是一个混合包 - 在该区域中已经有了一些进展。您还可以使用Windows Live邮件查看邮件,以查看是否可以重现问题。此外,您可以使用.NET和CDOSYS代码来删除MIME并显示结果。