参考MIME Encoded-word syntax on wikipedia:
=?charset?encoding?encoded text?=
我想为MailAddress.DisplayName
,MailMessage.Subject
等指定字符集和编码。
例如:
=?iso-2022-jp?Q?=5B=1B=24B=21A=1B=28B=5D=5B=1B=24B=21B=1B=28B=5D?=
=?ISO-2022-JP?B?WxskQiFBGyhCXVs=?=
似乎当前的.NET框架实现不允许这种灵活性。与编码相关的属性(例如MailMessage.SubjectEncoding
)映射到MIME字符集,并且无法指定MIME编码。 MIME编码由框架设置,如下所示:
如果MailMessage.SubjectEncoding设置为UTF-8(默认值), UTF-32,Unicode或BigEndianUnicode和主题包含非ASCII 字符,然后它将在Base64中编码。否则它会 在Quoted Printable中编码。 (来源:Microsoft Connect)
如果无法使用MailMessage类,还有其他方法可以实现吗?
答案 0 :(得分:0)
没有办法为System.Net.Mail执行此操作,但您可以使用MimeKit之类的库。
在MimeKit中,您可以为任何标头指定字符集,但它有自己的逻辑来选择要使用的适当编码,因为几乎没有人愿意自己设置它。有一个非常简单的数学公式来决定最有效的编码算法,因此通常没有必要覆盖它。
但是,如果你真的需要/想要覆盖它,因为MimeKit是完全开源的,你可以修改源代码。