2014-01-22 33 views
0

參照MIME Encoded-word syntax on wikipedia如何爲MailMessage標題(例如To,From,Subject)設置字符集和編碼?

=?charset?encoding?encoded text?= 

欲同時指定字符集和編碼爲我MailAddress.DisplayNameMailMessage.Subject

對於實施例:

  • 字符集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類是不可能的,是否有任何其他方式來實現這一點?

回答

0

System.Net.Mail沒有辦法做到這一點,但你可以使用庫如MimeKit

在MimeKit中,你可以指定任何頭文件的字符集,但是它有自己的選擇合適的編碼的邏輯,因爲幾乎沒有人關心自己想要設置它。有一個非常簡單的數學公式來決定最有效的編碼算法,所以通常沒有必要重寫它。

但是,如果您確實需要/想重寫它,由於MimeKit是完全開源的,您可以修改源代碼。

相關問題