參考地址:http://blog.csdn.net/whowhen21/article/details/5959225
在做項目時候,用到.Net的System.Net.Mail發送郵件,經測試,發現如果標題過長,收到的就會是亂碼了(那種Base64格式的數據),幾經測試,發現只能放60個中文漢字,多一個標點就出問題,后來想辦法,解決了,現奉上解決方案~
把郵件標題轉換成base64編碼的,但是有特定的要求
- private?static?void?Send()????
- {????
- ????StringBuilder?title?=?new?StringBuilder();????
- ????title.Append("=?utf-8?B?");????
- ????title.Append(ToBase64("長長的郵件標題測試"));????
- ????title.Append("?=");????
- ????SendMail(title,?"內容");????
- }????
- ????
- private?string?ToBase64(string?instr)????
- {????
- ????byte[]?bt?=?Encoding.GetEncoding("utf-8").GetBytes(instr);????
- ????return?Convert.ToBase64String(bt);????
- }????
?
那里的utf-8是你設定的郵件編碼,要和下面ToBase64中的一致才行。
當然,如果標題還是過長的話,這種還是會出現亂碼,解決方法就是把標題拆分成若干段,沒段都用StringBuilder那里的處理方法,最后在拼接起來作為標題,發送時沒有問題的。至此,這個問題就解決啦。
不過也許這個問題和郵件服務器有關吧,我是在自己的服務器上才出現這個問題,163之類的我沒測。希望能對遇到相同問題的童鞋有所幫助。