真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

SmtpClient發(fā)送郵件時附件名稱亂碼-創(chuàng)新互聯(lián)

在用戶環(huán)境發(fā)現(xiàn)一個現(xiàn)象,使用System.Net.Mail.SmtpClient發(fā)送郵件,當附件名包含中文且長度較長時,最終的郵件里附件名會亂掉,寫個簡單的測試程序:

10年積累的網站設計、成都做網站經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站制作后付款的網站建設流程,更有武義免費網站建設讓你可以放心的選擇與我們合作。
var mail = new MailMessage("from@test.com", "to@test.com");
mail.Subject = "測試郵件亂碼";
var atta = new Attachment(@"C:\測試郵件中文出現(xiàn)亂碼20150115.rar");
mail.Attachments.Add(atta);

var smtp = new SmtpClient();
smtp.Host = "test.com";
smtp.Credentials = new NetworkCredential("from", "test");
smtp.Send(mail);

使用Foxmail接收郵件,然后查看郵件原始信息,發(fā)現(xiàn)附件部分的MIME居然是這樣的:

SmtpClient發(fā)送郵件時附件名稱亂碼

這個怪異的name導致了在郵件客戶端里顯示亂碼。換不同的機器測試,有些機器是正常的,說明與軟件環(huán)境有關。正常的郵件應該是這樣的:

SmtpClient發(fā)送郵件時附件名稱亂碼

研究了一下,發(fā)現(xiàn)是.Net Framework的BUG,詳見微軟網站:http://support.microsoft.com/kb/2402064, 當附件名超過41個utf8 byte時,會錯誤的進行2次編碼導致的。 補丁見 https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=31723。

如果服務器未升級,可以暫時修改程序來避開這個BUG,主要是手工指定附件的名稱:

var mail = new MailMessage("from@test.com", "to@test.com");
mail.Subject = "測試郵件亂碼";
string file = @"C:\測試郵件中文出現(xiàn)亂碼20150115.rar";
var atta = new Attachment(file);
string name = Path.GetFileName(file);
string base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(name));
atta.ContentDisposition.FileName = string.Format("=?utf-8?B?{0}?=", base64);   //指定附件的filename
atta.Name = "p_w_upload";           //指定MimePart的Name,不包含中文,這樣就不會被BUG影響
atta.NameEncoding = Encoding.UTF8;
mail.Attachments.Add(atta);

var smtp = new SmtpClient();
smtp.Host = "test.com";
smtp.Credentials = new NetworkCredential("from", "test");
smtp.Send(mail);

此時收到的郵件是這樣的,注意劃紅線部分:

SmtpClient發(fā)送郵件時附件名稱亂碼

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


分享文章:SmtpClient發(fā)送郵件時附件名稱亂碼-創(chuàng)新互聯(lián)
轉載來源:http://weahome.cn/article/dgccio.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部