2007-11-09

Email 中的 html 附件在某些軟體中會直接顯示內容

相信大多數的程式設計師都寫過寄信的程式, 而些其中一定會有要夾帶附件的情形! 幾天前有個客戶提出了一個問題, 當然這個問題在我們這裡都不會發生(所有的程式都是這樣, 只有在你那兒會有問題, 在我這兒都是好的)!

問題的內容大概是說客戶在打開由系統寄出的 mail 時, 會看到一堆亂碼, 而且附件檔案不見了! 怎麼會這樣咧? 我們內部的測試人員都說沒有這樣的情形啊! 深入了解一下, 才知道原來客戶的郵件軟體是 Notes(又是 Notes), 而他們所看到的亂碼其實是一個格式為 html 的附件, 只不過在 Notes 中會把 html 附件的內容直接秀在畫面上, 然後那份 html 的編碼又和郵件內容的編碼不同, 然後就造成這樣的結果啦!!

既然知道了問題是怎麼發生的, 就來找解決的方法吧! 先用 Outlook 寄出同一份附件檔試看看, 咦~~怎麼附件乖乖的在他應該在的位置咧? 那就很明顯一定是郵件內有某些檔頭不一樣的關係, 把兩份郵件的原始碼稍稍的比較了一下, 解答出現了:

mailheader

所以解決的方法就是把 Attachment 的 ContentDisposition.DispositionType 設成 System.Net.Mime.DispositionTypeNames.Attachment 之後再加入到 MailMessage 中就可以啦!!

Attachment data = new Attachment(filename);
data.ContentDisposition.DispositionType = DispositionTypeNames.Attachment;

沒有留言: