登记新账户
登录
论坛
搜索
帮助
导航
私人消息 (0)
公共消息 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
iGENUS专业邮件论坛
»
Bugs-digest / 错误报告
» 关于igenus无法正常解析Quoted-Printable格式编码邮件的问题
返回列表
发帖
micheal
发短消息
加为好友
micheal
当前离线
UID
188
帖子
92
精华
0
积分
92
阅读权限
20
在线时间
0 小时
注册时间
2003-5-22
最后登录
2007-1-10
注册会员
1
#
跳转到
»
倒序看帖
打印
字体大小:
t
T
发表于 2005-5-20 13:52
|
只看该作者
关于igenus无法正常解析Quoted-Printable格式编码邮件的问题
igenus提供的对Quoted-Printable格式编码进行解析的功能有错误,导致部分使用Quoted-Printable编码的邮件显示为乱码,我正在写这个补丁,稍后公布!
收藏
分享
micheal
发短消息
加为好友
micheal
当前离线
UID
188
帖子
92
精华
0
积分
92
阅读权限
20
在线时间
0 小时
注册时间
2003-5-22
最后登录
2007-1-10
注册会员
2
#
发表于 2005-5-23 17:55
|
只看该作者
公布解决方案
其实这是个很小的bug,在进行邮件编码的时候,有的使用“quoted-printable”,有的却写成了“Quoted-Printable”,这到底有什么不同呢,其实说白了都是一种编码方式,写法也一样,但是igenus对这似乎一样的编码方式却出现了两种的解释方法。
错误代码如下:
switch($Content_Transfer_Encoding){
case "quoted-printable":
while( $line=fgets($FD_MAIL,2048) ){
if( trim($line) == "--".$Boundary ) break;
if( trim($line) == "--".$Boundary."--" ){
$PartEnd = 1;
break;
}
$buff .= $line;
$k++;
if($k==CFG_BUFF_NUM)
{
$buff = quoted_printable_decode($buff);
fwrite($FD_BODY,$buff);
$Size += strlen($buff);
$buff = ''; $k = 0;
}
}
// 输出末尾的部分
$buff = quoted_printable_decode($buff);
fwrite($FD_BODY,$buff);
$Size += strlen($buff);
break;
case "base64":
$buff = '';
$k = 0;
while( $line=fgets($FD_MAIL,2048) ){
if( trim($line) == "--".$Boundary ) break;
if( trim($line) == "--".$Boundary."--" ){
$PartEnd = 1;
break;
}
$buff .= $line;
$k++;
if($k==CFG_BUFF_NUM)
{
$buff = base64_decode($buff);
fwrite($FD_BODY,$buff);
$Size += strlen($buff);
$buff = ''; $k = 0;
}
}
// 输出末尾的部分
$buff = base64_decode($buff);
fwrite($FD_BODY,$buff);
$Size += strlen($buff);
break;
case "binary":
case "8bit":
case "":
default:
$buff = '';
$k = 0;
while( $line=fgets($FD_MAIL,2048) ){
if( trim($line) == "--".$Boundary ) break;
if( trim($line) == "--".$Boundary."--" ){
$PartEnd = 1;
break;
}
$buff .= $line;
$k++;
if($k==CFG_BUFF_NUM)
{
fwrite($FD_BODY,$buff);
$Size += strlen($buff);
$buff = ''; $k = 0;
}
}
这里面可以看出来,只有quoted-printable的解码方法,而php默认大小写敏感,所以这就导致Quoted-Printable按照default进行解释了,这就导致部分的邮件中Quoted-Printable格式解释错误。
解决的方法更简单,只要使用 $Content_Transfer_Encoding=strtolower($Content_Transfer_Encoding);
进行一下强制转换就可以了,具体位置在prev_inc文件的156行后,不过类似的大小写问题这个文件里面还有,建议都进行一下强制转换。
别看这个问题看起来可能并不起眼,但我用了差不多一天来逐语句分析,我用的是\igenus_2[1].0.1_20040713_release版本,不过我发现新版本中这个问题依然存在,希望大麻兄在下个版本中更新这个Bug。
TOP
大麻
发短消息
加为好友
大麻
当前离线
超级坐家
UID
5
帖子
2323
精华
1
积分
2121
阅读权限
200
在线时间
189 小时
注册时间
2003-2-10
最后登录
2010-9-3
管理员
3
#
发表于 2005-5-23 19:54
|
只看该作者
谢谢您的指正,igenus3中已经修正了该错误
TOP
返回列表
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]