问题描述
楼主发表于:2010-07-2017:32:20用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{stringstr=Msg.Headers.GetHeader("Subject");string[]strss=str.Split('?');byte[]bytystr=Convert.FromBase64String(strss[3]);stringstrlast=Encoding.Default.GetString(bytystr);info.Title=strlast;}catch{info.Title="无主题";}之所以用try,cath,因为有些网络系统上发送的邮件,如CSDN用户密码忘记后,发送密码到注册邮箱的标题,超出Base64编码范畴,会出错,用catch避免出错。有时间的同行可以尝试解决下这个问题。以上代码除了极少超出ASCII范围的编码都可以正常显示。
解决方案
解决方案二:
不行啊
时间: 2024-09-11 18:21:01