当前位置:编程学习 > C#/ASP.NET >>

解决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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,