2012-09-26 34 views
1

我使用System.Net.Mail發送電子郵件。到目前爲止,我已經將郵件編碼設置爲utf-8,但現在我必須使用ISO-8859-1編碼進行發送。我明白,我可以如何更改編碼,我可以安全地更改編碼嗎?我可以面對哪些問題改變這種情況?c#將utf-8的電子郵件編碼更改爲iso-0-8859-1

var email = new MailMessage(from, to) 
{ 
    Subject = formManager.ReplaceValuesInString(alert.EmailSubject, replaceValues), 
    IsBodyHtml = (alert.EmailMode == 2), 
    BodyEncoding = Encoding.UTF8 
}; 

回答

1

我希望你要面對的主要問題是,雖然UTF-8涵蓋了整個的Unicode,ISO-8859-1不 - 它不僅具有U + 0000至U + 00FF(不即使如此,實際上 - 在U + 0080和U + 009F之間的ISO-8859-1中存在一個「漏洞」)。因此,如果您嘗試發送字符不在ISO-8859-1中的文本,該文本將不會通過。

+0

謝謝你爲我清理! – espvar

0

這取決於誰在寫郵件。

如果電子郵件是生成的所有系統(由你)只要確保沒有電子郵件的一部分(如果從質數據庫,Web服務......拉的東西)包含不一致的字符。 但是,如果您將用戶輸入作爲整個電子郵件的一部分進行中繼,則並不容易。

結論:如果電子郵件是系統生成的,只要您控制生成內容的方式,就可以使用任何編碼發送電子郵件。如果您沒有控制權,請使用兼容編碼,其中涵蓋可能需要存儲的每個可能字符。

提示:除非我們談論的是大量的數據存儲,否則不推薦使用其他編碼而不是utf-8來存儲用戶輸入。在dbase或文件系統上使用utf-8編碼浪費的空間也可以通過底層系統(fs,dbase)的內置壓縮方法保存並保留給它們。

+0

電子郵件取決於不受我控制的數據。代碼是許多客戶使用的CMS的一部分。我所做的只是添加不同編碼的下拉列表,以便每個電子郵件模板都可以更改。 – espvar

+0

我不明白爲什麼你可能需要這樣一個選項時,有一個全在一起的解決方案(utf-8)。這不值得。 – Xaqron