2015年2月13日 星期五

[※注意!!]使用.Net 寄送郵件中文附件檔名亂碼問題

使用.NET寄發信件時,夾帶之中文附件檔名會亂碼。

原因:.NET Framework 4的問題(Bug)
解決方案:
將專案的「目標Framework(G)」改為.NET Framework 3.5以下或.NET Framework 4.5以上

微軟說明-徵狀:
請考慮下列情況:
    ●您執行的 Microsoft.NET Framework 4 編譯的應用程式。
    ●應用程式呼叫System.Net.SmtpClient類別,以傳送電子郵件訊息,並使用附件類別來將檔案附加到郵件訊息物件。
    ●附件名稱包含非 ASCII 字元,且為超過 41 utf-8 編碼的位元組。
   
在這個案例中,附件名稱意外前已經編碼兩次傳輸。然後,電子郵件訊息收件者附件中尋找被截斷的編碼的名稱,但不是原始的名稱。

微軟說明-發生的原因:
之所以發生這個問題,是因為在.NET Framework 4 的問題。包含正確摺疊每行長度限制的 RFC 標準重新寫入SMTP編碼方式。這種行為插入其他歸位換行(CRLF)字元的名稱字串太長時的回復線。這些額外的控制字元會導致要重新編碼的附件名稱。

參考網站: http://support.microsoft.com/kb/2402064