使用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 兄弟的提示,终于解决,方法如下:
.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");
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) 编辑 收藏 举报