使用.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