在邮件标头中找到无效的字符:“周”

本文探讨了在发送带有附件的邮件时遇到的错误问题,特别是邮件标头中出现无效字符的情况。通过调整代码,移除了与文件创建、修改及访问时间相关的设置,成功解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天测试发邮件,发现了个奇怪的问题:在邮件标头中找到无效的字符:“周”

刚开始以为是标题的编码问题,于是加了 m_message.SubjectEncoding = Encoding.UTF8; 但问题依旧没有解决,

后来又google了半天,有人说是微软的一个bug,就是电脑名不能是中文的,但是我的电脑名是英文的,这个应该可以排除,

后来发现了就是如果邮件带附件的话就会出现这个错误,如果没有附件就完全没有问题,这是什么原因呢,纠结了半天,最后找到原因是以下3行代码的问题,

disposition.CreationDate = System.IO.File.GetCreationTime(filePath);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(filePath);
disposition.ReadDate = System.IO.File.GetLastAccessTime(filePath);

去掉后就没有问题了,,什么原因呢,也没搞清楚。。。

?
public static void SendEmail( string [] strArrTo, string strSubject, string strBody, string [] filePaths)
{
MailMessage m_message = new MailMessage();
 
foreach (var strTo in strArrTo)
{
m_message.To.Add( new MailAddress(strTo));
}
m_message.SubjectEncoding = Encoding.UTF8;
m_message.Subject = strSubject;
m_message.Body = strBody;
foreach (var filePath in filePaths)
{
Attachment data = new Attachment(filePath, MediaTypeNames.Application.Octet);
ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(filePath);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(filePath);
disposition.ReadDate = System.IO.File.GetLastAccessTime(filePath);
m_message.Attachments.Add(data);
}
 
SmtpClient m_smtpClient = new SmtpClient();
m_smtpClient.Timeout = 30000;
m_smtpClient.Send(m_message);
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值