[.Net] Mail 附件檔名出現亂碼?!
問題發生在我們開發時叫用 .Net SmtpClient 類別, 若附件
使用中文檔名時會發生如下圖狀況
追蹤後, 找到一樣的苦主 Attachment's name is wrong decoded if norwegian letters are used
原來是 .Net Framework v4 的一個小 Bug
下列是來自 微軟 KB2402064 的敘述
- 發生這個問題,是因為在.NET Framework 4 的問題。包含正確摺疊每行長度限制的 RFC 標準重新寫入 SMTP 編碼方式。這種行為插入其他歸位換行 (CRLF) 字元的名稱字串太長時的回復線。這些額外的控制字元會導致要重新編碼的附件名稱。
解決方法有二
一. 將你的專案升級至 .Net Framework v4.5
二. 微軟有提供 KB2402064 的 Hotfix
QFE: Dev11 # 34703 - KB 2402064 - SMTP: Non-ASCII Attachment name double encoded (Dev 10: 887240)
下列是該 KB2402064 完整說明
電子郵件訊息附件名稱包含非 ASCII 字元,且能 41 utf-8 編碼的位元組比針對.NET Framework 4 編譯的應用程式中的傳輸前已經編碼兩次