bartholomew

如此星辰非昨夜,为谁风露立中宵~

使用System.Net.Mail.SmtpClient发送邮件时出现的乱码问题

以前公司给客户群发邮件采用的是用Socket直接与邮件服务器通讯的方式,但是后来发现可能是我们的那部分模块写的不完善,采用多线程同时发送大量邮件时会出现丢失邮件的情况,大概会丢失10%左右,以前写这个模块的人现已不在公司了,于是决定直接采用.NET自带的System.Net.Mail.SmtpClient组件。

.NET的System.Net.Mail.SmtpClient封装的比较好,发送邮件时操作比较简单,只需简单设置几个属性即可。我采用SmtpClient替换以前的邮件发送模块后,丢失邮件的情况几乎没有了~~~

但过了几天,有些客户反映收到的邮件是乱码,虽然通过让客户修改用来接收邮件的ie或是foxmail等客户端的编码可以解决,但是总不能每次都让客户修改编码吧……

查找原因,发现邮件正文的模版是html格式,编码采用的是gb2312,但用SmtpClient时设置的却是utf-8,遂将SmtpClient发送时的设置改为gb2312,但此时发送出去的邮件却全都是乱码了,在网上查找后得到  stone 兄弟的提示,终于解决,方法如下:

mail.From = new MailAddress("fromabc@163.com", "名字", Encoding.GetEncoding("GB2312"));
mail.To.Add(
new MailAddress("toabc@163.com","名字",Encoding.GetEncoding("GB2312")));

mail.SubjectEncoding 
= Encoding.GetEncoding("GB2312");
mail.BodyEncoding 
= Encoding.GetEncoding("GB2312");

posted on 2006-12-01 10:58  bartholomew  阅读(2348)  评论(0编辑  收藏  举报

导航