题目一栏看到的是:=?gb2312?B?W73wyb22vrDUyrax8LTL08q8/s6qwKy7+NPKvP5dMzQsMjYsNTcsNDUsMDMs?=内容一栏看到的是:--Boundary-=_mZVzrpfzyhqkvCnjeLJpTPLzPXom
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: base64DQpzYWRmamtzZGxqZjtrcw0KcztkZms7bHNkYWtmZ3NkJw0KZGZsZ2s7ZGZsa2wNCg0KDQo=
--Boundary-=_mZVzrpfzyhqkvCnjeLJpTPLzPXom
Content-Type: text/html; charset="gb2312"
Content-Transfer-Encoding: base64PFA+PEJSPnNhZGZqa3NkbGpmO2tzPC9QPg0KPFA+cztkZms7bHNkYWtmZ3NkJzwvUD4NCjxQ
PmRmbGdrO2RmbGtsPEJSPjxCUj48QlI+PC9QPjxTUEFOID48L1NQQU4+PGJyPjwhLS0gZm9v
dGVyIC0tPjxicj48YnI+PGJyPjxicj48YnI+PGRpdiBzdHlsZT0iYm9yZGVyLWJvdHRvbTox
cHggc29saWQgIzk5OSI+PC9kaXY+PGJyPg0KDQoJPGZvbnQgY29sb3I9ImJsYWNrIiBzdHls
ZT0iZm9udC1zaXplOjE0LjhweCI+vvggzt4gueMguOYgtcQgzfgg0tcg0MIg0rsgtPogtecg
19Mg08ogz+Q8L2ZvbnQ+DQoJPGJyPg0KCTxhIGhyZWY9IiBodHRwOi8vd3d3LjE4OC5jb20v
aW5kZXguaHRtP21haWxzaXRlPTE2MyZtYWlscG9zPTIwMDUxMTI4Jm51bT1BIiB0YXJnZXQ9
Il9ibGFuayIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjE2MCU7Y29sb3I6
Ymx1ZSI+ufogvMogtqUgvLYgybEgtr4gt7QgwKwgu/gg0v0gx+ajrLrAILuqILT4IL/tILS0
INDCIHdlYiC8vCDK9aGqoarV5iDV/SC1xCDQ0CC80iDK1yDRoSCjoQ0KPC9hPg0K
--Boundary-=_mZVzrpfzyhqkvCnjeLJpTPLzPXom--根据里面的提示,好像是说经过了base64处理了。那这样的话,应该怎么样还原呢?
但是有的信件它就是能显示正确的,为什么呢?
《这些显示出来的东西都是收下来后把它们显示到编辑框中》

解决方案 »

  1.   

    信件是什么?是私人的信息吧?是要加密吧?既然要加密,那么你得到的就是加密后的内容,当然普通的文本是看不出任何东西的,你需要对其内容进行解密。以你上面举例来说,你要坐的是对
    --Boundary-=_mZVzrpfzyhqkvCnjeLJpTPLzPXom
    之间的内容进行base64的编码解密。
      

  2.   

    楼上的老大,那是我测试时发现的。
    信件根本没有经过加密。有的时候,今年看到的是HTML的源代码。这个好理解,可能是因为信件是网页式的。
    而有的时候,我收到的信就是正确的,没有出现多余的符号。多数时候是收到这种提示有base64编码的东西。这是www.163.com上的免费邮箱测试的结果。
    这个网站SMTP是要SMTP认证,用的就是base64编码。
    但是我现在是收信,POP3,不是SMTP。难道收信得到的是也base64编码后的结果?呵呵,那我现在试试反base64编码看看结果是不是与当初自己发上去的一样。
      

  3.   

    这是邮件传送时为了避免非ASCII字符在不同平台上出现问题而采用的编码,因此所有内容均编码为ACSII形式。Base64编码把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。
    如"张3"
    11010101 11000101 00110011 
    将被编码为
    00110101 00011100 00010100 00110011
    知道了算法,还原就容易了,先把每4字节前面的00去掉,然后再把剩下的24字节拼接起来,还原成3个字节就OK了。
      

  4.   

    忘了说了,如果编码前字节数不是3的倍数,编码时会自动在后面补充"=",直到字节数为3的倍数为止。这就是为什么Base64经常结尾是一个或两个"="按照算法写了一个程序,还原出来你的邮件标题是:[金山毒霸识别此邮件为垃圾邮件]34,26,57,45,03,内容是HTML的这里不让我发,HTML的内容是国 际 顶 级 杀 毒 反 垃 圾 引 擎,豪 华 带 宽 创 新 web 技 术——真 正 的 行 家 首 选 !哈哈,可见,是一封真正的垃圾邮件
      

  5.   

    看了令存为的html,才知道你这个邮件是网易发来的,应该是你自己给自己发的测试内容信的内容是你胡乱在键盘上按出来的,这里还不让发,我晕。后面带网易邮箱的典型标志“绝 无 广 告 的 网 易 新 一 代 电 子 邮 箱
    国 际 顶 级 杀 毒 反 垃 圾 引 擎,豪 华 带 宽 创 新 web 技 术——真 正 的 行 家 首 选 !”
      

  6.   

    if u use vs2003,pls try  base64encode,base64decode.
      

  7.   

    Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个“=”。
      例:将对ABC进行BASE64编码
            首先取ABC对应的ASCII码值。A(65)B(66)C(67)。
            再取二进制值A(01000001)B(01000010)C(01000011),然后把这三个字节的二进制码接起来(010000010100001001000011),再以6位为单位分成4个数据块并在最高位填充两个0后形成4个字节的编码后的值(00010000)(00010100)(00001001)(00000011)。蓝色部分为真实数据。再把这四个字节数据转化成10进制数得(16)(20)(19)(3)。最后根据BASE64给出的64个基本字符表,查出对应的ASCII码字符(Q)(U)(J)(D)。这里的值实际就是数据在字符表中的索引。
    注BASE64字符表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/