示例代碼:
// 1.創建郵件
MailMessage mailMsg = new MailMessage();
mailMsg.To.Add(new MailAddress("test@test.com"));
// 2.設置郵件標題、正文等信息
mailMsg.HeadersEncoding = Encoding.GetEncoding("gb2312");
mailMsg.SubjectEncoding = Encoding.GetEncoding("gb2312");
mailMsg.BodyEncoding = Encoding.GetEncoding("gb2312"); // 郵件內容編碼
mailMsg.Subject = emailTitleStr; // 郵件標題
mailMsg.Body = emailBodyStr;
mailMsg.IsBodyHtml = true; // 郵件內容是否支持html
mailMsg.Priority = MailPriority.High;
// 附件:在 .net 4.0中,附件名稱含有特殊名稱時,接收方將收到名字為空的附件
mailMsg.Attachments.Add(new Attachment("D:\資料(2016).txt"));
// 3.創建SMTP發送
SmtpClient smtp = new SmtpClient(emailSMTP, emailPort);
smtp.Credentials = new NetworkCredential(emailName.Address, emailPwd);
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Send(mailMsg);
問題說明:使用 SmtpClient 添加附件時,若附件名稱過長或含有特殊符號,會造成郵件接收方收到的附件名稱為空。
問題原因:.net 4.0的一個Bug。
解決方案:安裝 .net 4.5或以上類庫。
.NET Framework 4.5 下載地址:
官網:https://www.microsoft.com/zh-cn/download/details.aspx?id=30653
百度:http://rj.baidu.com/soft/detail/22370.html
==================================系列文章==========================================
本篇文章:2.3 C# 發送郵件 附件名稱為空
C#文章導航