C# 发送邮件 附件名称为空

 示例代码

// 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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值