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

 示例代码

// 1.创建邮件
MailMessage mailMsg = new MailMessage();
mailMsg.To.Add(new MailAddress("[email protected]"));

// 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或以上类库。

下载地址

官网https://www.microsoft.com/zh-cn/download/details.aspx?id=30653

百度http://rj.baidu.com/soft/detail/22370.html

==================================系列文章==========================================

本篇文章:2.3 C# 发送邮件 附件名称为空

C#文章导航

时间: 2024-10-06 00:48:25

C# 发送邮件 附件名称为空的相关文章

Java基础-输入输出-2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt

2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt package Test03; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import jav

javaVuser——javamail发送邮件+附件

调试过程中遇到的问题: 1.权限验证不通过 props.put("mail.smtp.auth","true"); 2.附件乱码 bp.setFileName(MimeUtility.encodeText(fileds.getName(),"utf-8",null));//取附件要这样写,不然附件名会乱码.

C#反序列化json字符串时,提示:应为来自命名空间“”的元素“root”。。遇到名称为“”、命名空间为“”的“None”。

反序列化调用接口返回的字符串时,出现:应为来自命名空间“”的元素“root”..遇到名称为“”.命名空间为“”的“None”.,导致反序列化数据失败,这种失败并有时候并不会直接提示反序列化失败(抛异常),而是把不能正常反序列化的部分丢弃(值为null),查了一下网上的资料,有说是使用反序列化和序列化的版本不一致,也有说是命名空间的问题,我检查了貌似都没问题,实在没办法了,直接先实例化一个,序列化后和接口返回的值做比较.终于找到问题出在哪了. 是因为我自己定义的类的属性命是Keys,二接口返回的这

Dell服务器在安装Centos6.6时网卡名称为em1问题的解决

公司新买了几台Dell服务器,安装Centos6.6后发现服务器的网卡名称为em1,这个原因是biosdevname引起的,默认情况下Centos6.6下biosdevname是关闭的,但是如果是Dell的服务器则会自动启用该内核参数. biosdevname是由dell开发的工具,旨在为网络设备的命名理清思路(并且保持一致性!).biosdevname是一款udev帮助程序,可根据系统BIOS提供的信息对网络接口进行重命名. 新的命名规则如下: em[1-N] 表示主板NIC(内置网卡) pc

centos6配置本地光盘yum源、rhel7修改网卡名称为eth0

VMware安装好centos/rhel后要配置的几点(配置本地光盘yum源.修改网卡名称为eth0等) [[email protected] ~]# setenforce 0 [[email protected] ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config [[email protected] ~]# tar zcvf /root/redhat.repo.tgz /etc/yum.repos.d/

RHEL7/centos7修改网卡名称为eth0(二)

由于RHEL7中采用新的网卡名称命名方法,导致网卡名变得难以理解和记忆,本文介绍怎样将网卡名称修改为传统的eth0的命名方式,可以实现定义任意网卡为eth0. 之前的文章<<RHEL7/centos7修改网卡名称为eth0>>介绍了一种网卡命名的方法,这里介绍另外一种. 网卡名称修改步骤 修改/etc/sysconfig/grub文件 在文件中添加"net.ifnames=0 biosdevname=0"内容,各参数间使用空格分割. GRUB_TIMEOUT=5

应用程序中的服务器错误,没有名称为“ServiceBehavior”的服务行为

应用程序中的服务器错误,没有名称为"ServiceBehavior"的服务行为 今天在阅读"创建和使用Web服务"的相关内容,在浏览器中查看Service.svc文件时遇到错误:应用程序中的服务器错误,没有名称为"ServiceBehavior"的服务行为. 查看源代码: <?xml version="1.0"?> <configuration> <connectionStrings> &l

应用程序中的server错误,没有名称为“ServiceBehavior”的服务行为

应用程序中的server错误,没有名称为"ServiceBehavior"的服务行为 今天在阅读"创建和使用Web服务"的相关内容,在浏览器中查看Service.svc文件时遇到错误:应用程序中的server错误,没有名称为"ServiceBehavior"的服务行为. 查看源码: <? xml version="1.0"? > <configuration> <connectionStrings

Linux使用Mutt发送邮件/附件

使用Mutt发邮件极其方便,只需要一条命令即可发送或者批量发送邮件 功能说明:E-mail管理程序. 语 法:mutt [-hnpRvxz][-a<文件>][-b<地址>][-c<地址>][-f<邮件文件>][-F<配置文件>][-H<邮件草稿>][-i<文件>][-m<类型>][-s<主题>][邮件地址] 补充说明:mutt是一个文字模式的邮件管理程序,提供了全屏幕的操作界面. 参 数: -a&l