解决jmail接收邮件标题乱码(ASP.NET)
用jmail接收网络邮件时,经常会出现标题成乱码。无论如何设置页面默认编码方式都不管用。下面是我的解决方法,希望对大家有用。
Msg.Subject获取标题错误。
使用Msg.Headers.GetHeader("Subject")获取标题,的出来的字符串为Base64编码。
举例:Msg.Headers.GetHeader("Subject")得出:=?utf-8?B?5L2g5Lus5aW95ZWK77yM6IO95pi+56S65ZCX77yf?= 。
一共有4个“?”号,作为分隔符
第一段:utf-8
第二段:B
第三段:5L2g5Lus5aW95ZWK77yM6IO95pi+56S65ZCX77yf
第四段:=
其中第三段就是标题的内容经过Base64编码后的显示。
解决代码如下(C#):
下面info是我程序中的实体类;
try
{
string str = Msg.Headers.GetHeader("Subject");
string[] strss = str.Split('?');
byte[] bytystr = Convert.FromBase64String(strss[3]);
string strlast = Encoding.Default.GetString(bytystr);
info.Title = strlast;
}
catch
{
info.Title = "无主题";
}
之所以用try,cath,因为有些网络系统上发送的邮件,如CSDN用户密码忘记后,发送密码到注册邮箱的标题,超出Base64编码范畴,会出错,用catch避免出错。有时间的同行可以尝试解决下这个问题。以上代码除了极少超出ASCII范围的编码都可以正常显示。
--------------------编程问答-------------------- 你用一些不常见网站的邮箱发邮件试试。
--------------------编程问答-------------------- 看错了。LZ只说解决标题乱码。。
我以为是内容乱码
罪过。。顶起 --------------------编程问答-------------------- 谢谢楼主,最近为这问题烦了几天! --------------------编程问答-------------------- 答案在这里 --------------------编程问答-------------------- 路过!!!!!!!!!!!!
补充:.NET技术 , ASP.NET