公司需求,需要给公司客户发邮件带附件,附件需要是pdf格式的,本身测试时成功的,但是当pdf文件的名称为:××××××—(2013年六月上).pdf时,发送的附件就会损坏,无法打开,希望大家能帮忙解决下。
代码如下:
SmtpClient smtp = new SmtpClient(); //实例化一个SmtpClient smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //将smtp的出站方式设为 Network smtp.EnableSsl = false;//smtp服务器是否启用SSL加密 smtp.Host = "smtp.163.com"; //指定 smtp 服务器地址 smtp.Credentials = new NetworkCredential("111@163.com", "1111"); MailMessage mm = new MailMessage(); //实例化一个邮件类 mm.Priority = MailPriority.Normal; //邮件的优先级,分为 Low, Normal, High,通常用 Normal即可 mm.From = new MailAddress("111@163.com", "公司", Encoding.GetEncoding(936)); //收件方看到的邮件来源; //第一个参数是发信人邮件地址 //第二参数是发信人显示的名称 //第三个参数是第二个参数所使用的编码,如果指定不正确,则对方收到后显示乱码 //936是简体中文的codepage值 //注:上面的邮件来源,一定要和你登录邮箱的帐号一致,否则会认证失败 mm.To.Add(new MailAddress("111@qq.com", "接收者g", Encoding.GetEncoding(936))); mm.Subject = "这是邮件标题"; mm.SubjectEncoding = Encoding.GetEncoding(936); // 这里非常重要,如果你的邮件标题包含中文,这里一定要指定,否则对方收到的极有可能是乱码。 // 936是简体中文的pagecode,如果是英文标题,这句可以忽略不用 mm.IsBodyHtml = true; //邮件正文是否是HTML格式 mm.BodyEncoding = Encoding.GetEncoding(936); //邮件正文的编码,设置不正确,接收者会收到乱码 mm.Body = "<font color='red'>邮件测试,呵呵</font>"; //邮件正文 mm.Attachments.Add(new Attachment(@"D:\PdfFiles\中小企业金融刊—(2013年六月上).pdf", System.Net.Mime.MediaTypeNames.Application.Pdf)); //添加附件,第二个参数,表示附件的文件类型,可以不用指定 smtp.Send(mm);
把D:\PdfFiles\中小企业金融刊—(2013年六月上).pdf也编码一下?
试过了 不好用啊 提供个编码方式我参考下呗
是不是
Encoding.GetEncoding(936) 问题呢
用gb2321 试试
接收方查看到的文件名对吗?
也是收不到的,文件显示损坏