[.Net] Mail 附件檔名出現亂碼?!

  • 3208
  • 0

[.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 編譯的應用程式中的傳輸前已經編碼兩次