读书人

|M| 发送邮件出现乱码 大家看看,该怎么

发布时间: 2012-02-06 15:52:45 作者: rapoo

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


应该是和字符串编码的问题有关

[解决办法]
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);

同意这个
[解决办法]
up

读书人网 >asp.net

热点推荐