相信大多數的程式設計師都寫過寄信的程式, 而些其中一定會有要夾帶附件的情形! 幾天前有個客戶提出了一個問題, 當然這個問題在我們這裡都不會發生(所有的程式都是這樣, 只有在你那兒會有問題, 在我這兒都是好的)!
問題的內容大概是說客戶在打開由系統寄出的 mail 時, 會看到一堆亂碼, 而且附件檔案不見了! 怎麼會這樣咧? 我們內部的測試人員都說沒有這樣的情形啊! 深入了解一下, 才知道原來客戶的郵件軟體是 Notes(又是 Notes), 而他們所看到的亂碼其實是一個格式為 html 的附件, 只不過在 Notes 中會把 html 附件的內容直接秀在畫面上, 然後那份 html 的編碼又和郵件內容的編碼不同, 然後就造成這樣的結果啦!!
既然知道了問題是怎麼發生的, 就來找解決的方法吧! 先用 Outlook 寄出同一份附件檔試看看, 咦~~怎麼附件乖乖的在他應該在的位置咧? 那就很明顯一定是郵件內有某些檔頭不一樣的關係, 把兩份郵件的原始碼稍稍的比較了一下, 解答出現了:
所以解決的方法就是把 Attachment 的 ContentDisposition.DispositionType 設成 System.Net.Mime.DispositionTypeNames.Attachment 之後再加入到 MailMessage 中就可以啦!!
Attachment data = new Attachment(filename);
data.ContentDisposition.DispositionType = DispositionTypeNames.Attachment;
沒有留言:
張貼留言