日期:2014-05-19  浏览次数:20497 次

|M| 发送邮件出现乱码 大家看看
System.Text.StringBuilder   sb   =   new   StringBuilder();
                System.IO.StringWriter   swRead   =   new   StringWriter(sb);
                Server.Execute(html,   swRead);
//这里是读取一个文件
                System.Net.Mail.SmtpClient   client   =   new   SmtpClient( "smtp.163.com ");
                client.UseDefaultCredentials   =   false;
                client.Credentials   =   new   System.Net.NetworkCredential( "Never52FC@163.com ",   "****** ");
                client.DeliveryMethod   =   SmtpDeliveryMethod.Network;

                System.Net.Mail.MailMessage   message   =   new   MailMessage( "Never52FC@163.com ",   "Never52FC@163.com ",   "test ",   sb.ToString());
                message.BodyEncoding   =   System.Text.Encoding.GetEncoding( "gb2312 ");
                message.IsBodyHtml   =   true;
                client.Send(message);
        }

以上在邮件里面是中文字都变成了,也看不懂是什么字
像这些“骞垮窞澶╁”

谢谢

------解决方案--------------------


用Server.HtmlEncode和Server.UrlEncode对sb搞搞 没准可以
------解决方案--------------------
学习。
帮楼主顶一下
------解决方案--------------------
以前遇过类似的,
这里是读取一个文件
===========
这里主要看你的文件保存的编码,如果你的系统是gb2312的。。webconfig里面设置是utf-8的。那这里就有可能导致乱码
我自己的解决方案是:简体系统asp.net用utf-8.邮件文件用ansi(系统默认编码),然后写入读取时都用回ansi!
注意。System.IO.StringWriter swRead 这个默认是用uft-8读的!!并不是ansi(也就是说当你的系统为简体时,保存的ansi指定的是简体,然而读的时候却用了uft-8去编码,所以乱码了)
------解决方案--------------------
改写读取的方法。仅供参考:
System.IO.Stream sr=File.Open( AppDomain.CurrentDomain.BaseDirectory+FileName,FileMode.Open );
System.IO.StreamReader reader = new System.IO.StreamReader(sr, System.Text.Encoding.Default);
string str=reader.ReadToEnd();
------解决方案--------------------
//--html是你获取的内容?那么

byte[] bs = System.Text.Encoding.GetEncoding( "gb2312 ").GetBytes(html);
bs = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding( "gb2312 "), System.Text.Encoding.GetEncoding( "utf-8 "), bs);
string getHtml = System.Text.Encoding.GetEncoding(To).GetString(bs);

------解决方案--------------------
同意楼上的
------解决方案--------------------
需要解码
------解决方案--------------------
message.BodyEncoding = System.Text.Encoding.GetEncoding( "gb2312 "); 把这个换成utf-8看看?
------解决方案--------------------
跟踪swRead.Encoding.EncodingName的是不是utf-8,如果是就应该把 message的编码设置和它一样.
------解决方案--------------------
学习中
------解决方案--------------------