在.net 中我們常常會利用MailMessage 和SmtpMail 配合發信,只要smtp server配置好,一般不會有什麼大的問題
但最近我在幫www.danceshopper.com進行多語言升級的時候,發現只要是繁體的郵件,到了hotmail中就subject是亂碼,內容也是亂碼,但用foxmail或outlook收到客戶端的時候,問題就不存在了,類似的問題也會在gmail[已經解決]163等地方出現,困擾了我好幾天,經過反復總結測試後,我得到了一個[或者說發現]正確發出非亂碼郵件的方案.
其實很簡單,就是你郵件的編碼必須正確,這裡編碼要注意的地方有2處
1 郵件中的charset 例如html郵件必須包含<META http-equiv="Content-Type" content="text/html; charset=gb2312">
2 BodyEncoding,請取得你寄信件的所在的語系,不能用utf8
為什麼強調不能用utf8呢,我分析是如hotmail這個老mailserver 可能開發的時間較久,不能對目前html進化有很好的支持,尤其是什麼utf8 unicode這類東西,但hotmail對很多人來說又是一個不可缺少的郵箱,用它收發自己日常的信件[我基本不用,太慢了],所以字符集這些東西必須強制制定,很多做多語言的朋友因為接觸到功能強大的utf8,往往和我一樣將這個問題忽略了,這裡有必要提醒大家,呵呵,需要恢歸原始
出處:思想與風的收藏館BLOG