如何为MailMessage标题设置charset和编码(例如To,From,Subject)?

时间:2014-01-22 09:04:06

标签: .net encoding mime

参考MIME Encoded-word syntax on wikipedia

=?charset?encoding?encoded text?=

我想为MailAddress.DisplayNameMailMessage.Subject等指定字符集和编码。

例如:

  • charset ISO-2022-JP,Q编码:=?iso-2022-jp?Q?=5B=1B=24B=21A=1B=28B=5D=5B=1B=24B=21B=1B=28B=5D?=
  • 带有Base64编码的charset ISO-2022-JP:=?ISO-2022-JP?B?WxskQiFBGyhCXVs=?=

似乎当前的.NET框架实现不允许这种灵活性。与编码相关的属性(例如MailMessage.SubjectEncoding)映射到MIME字符集,并且无法指定MIME编码。 MIME编码由框架设置,如下所示:

  

如果MailMessage.SubjectEncoding设置为UTF-8(默认值),   UTF-32,Unicode或BigEndianUnicode和主题包含非ASCII   字符,然后它将在Ba​​se64中编码。否则它会   在Quoted Printable中编码。 (来源:Microsoft Connect

如果无法使用MailMessage类,还有其他方法可以实现吗?

1 个答案:

答案 0 :(得分:0)

没有办法为System.Net.Mail执行此操作,但您可以使用MimeKit之类的库。

在MimeKit中,您可以为任何标头指定字符集,但它有自己的逻辑来选择要使用的适当编码,因为几乎没有人愿意自己设置它。有一个非常简单的数学公式来决定最有效的编码算法,因此通常没有必要覆盖它。

但是,如果你真的需要/想要覆盖它,因为MimeKit是完全开源的,你可以修改源代码。