|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的编码设置和它一样.
------解决方案--------------------学习中
------解决方案--------------------