System.Web.Mail 太陽春、System.Net.Mail 有問題

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 就可以測試了:

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

What is 6 + 11 ?
Please leave these two fields as-is:
IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)