浑水~摸鱼

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

刚开始以为是标题的编码问题,于是加了 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);
        }

 

posted on 2012-08-30 14:15  断鱼  阅读(1601)  评论(0编辑  收藏  举报