我針對的是面向國際市場的.NET應用程序,需要實現郵件發送功能。我注意到在MailMessage類還有用於設置編碼幾種選擇:爲MailMessage的每個部分設置編碼
我添加了一個滴在應用程序的配置頁面中選擇郵件編碼。
最好的做法是將MailMessage上的每個屬性設置爲使用此編碼?世界各地的郵件服務器和客戶會處理它嗎?或者應該只有一些這樣設置?
我針對的是面向國際市場的.NET應用程序,需要實現郵件發送功能。我注意到在MailMessage類還有用於設置編碼幾種選擇:爲MailMessage的每個部分設置編碼
我添加了一個滴在應用程序的配置頁面中選擇郵件編碼。
最好的做法是將MailMessage上的每個屬性設置爲使用此編碼?世界各地的郵件服務器和客戶會處理它嗎?或者應該只有一些這樣設置?
簡短的回答是否。
現在,我將詳細說明爲什麼。正確的i18n-ED郵件支持以下功能:
對於目前而言,國際化-ED域名是基本的ASCII字符串,通過的Punycode編碼(您可以在RFC 3492,RFC 5891和RFC 5890閱讀更多關於它)。爲了削減長話短說,你應該使用IdnMapping
類從UTF-16字符串轉換爲ASCII(你可以做到通過調用GetAscii()
方法。
通過安全編碼主題行和像其他(非地址)頭,我的意思是,目前它應該仍然是7位安全的,因爲相當多的舊的和過時的郵件傳輸代理不支持8位編碼,因此實際上您可以在這裏支持用戶的選擇,但是如果用戶選擇瞭如ISO-8859-x,KOI-8-x或Shift-JIS,我建議使用Quoted Printable或Base64算法對頭文件進一步編碼,以確保如果用戶選擇UTF-8,可以用UTF-7以及QP或B64。
最後但並非最不重要的是,你可以n應該支持用戶爲電子郵件正文選擇編碼。但是,如果它是16位基礎(如UCS2或UTF-16),我會建議將Transfer Encoding設置爲Base64。
另請注意,MailMessage類中的電子郵件地址中的非ASCII字符存在問題http://support.microsoft.com/kb/2576045 – 2011-09-21 11:18:52