The Will Will Web – All posts tagged ‘utf-8’
用 .NET 發信很簡單,但是要發出一封「完美的郵件」卻困難重重!我為了發一封完美的 E-Mail 遭遇到好多問題,但嘗試了很久還是無法達到 100% 的完美程度。主要的問題整理如下:
使用 System.Web.Mail 命名空間發信的問題 ( .NET 1.0 )
*
骨子裡是使用 CDO 元件 ( Microsoft CDO for Windows 2000 ) ( CDONTS ),包裝的功能陽春到不行
*
無法將郵件的附件檔案設定為 Inline Attachment使用 System.Net.Mail 命名空間發信的問題 ( .NET 2.0 )
*
傳送 Big5 編碼的郵件,有些中文字在 Outlook 裡會變成問號 (例如:奇, 寶)註1:因為 System.Net.Mail 在設定 Envelop Header 時只能使用的 Quoted-Printable 編碼,如果可以選擇 Base64 問題就會迎刃而解!可惜到 .NET 3.5 還是沒有將這問題解決!
註2:微軟是建議使用 System.Net.Mail 來發信,但若真的要使用就比需要強迫使用 UTF-8 來發送郵件才不會出現問號。
其實 System.Net.Mail 寫得很好,但是這一點點小問題真的讓我很頭痛,因為有很多舊版的 WebMail 系統與一些舊版的收信軟體至今還是不支援 Unicode 的郵件閱讀,所以為了發出郵件的相容性達到最高(讓所有的人都能夠正確開啟郵件),還是有必要將郵件以 Big5 編碼的方式發送,否則總是有一些人看不到 E-Mail 或者是必須手動調整 Browser 的字集才看的到。
如果你想試看看用 System.Net.Mail 發信時如何發生錯誤,可以試試以下的程式碼,請建立一個 Console Pogram 就可以測試了: