作者 邓超

解析body bug

... ... @@ -103,7 +103,17 @@ class Body {
/***************** start 第一行处理 **************/
// 第一行 UID 1568602721 RFC822.TEXT {589}
$first = explode(' ',$body[0]);
while (1){ if(str_starts_with(array_shift($first), 'RFC822.')) break; }
$rfc822 = true;
while (1){
$tempstr = array_shift($first);
if(str_starts_with($tempstr, 'RFC822')) {
// 是否是text 还是全部的包含header
if(str_contains($tempstr, '.')){
$rfc822 = false;
}
break;
}
}
$first = array_values($first);
$first[0] = preg_replace("/^\{\d+\}/",'',$first[0]);
// 第一行的结果就是 踢出 UID 1568602721 RFC822.TEXT {589}
... ... @@ -119,6 +129,11 @@ class Body {
// 再次组装成字符串
$data->body = trim(implode("\r\n",$body));
// 是否包含header
if($rfc822){
// 删除header头信息这个是多余的
$data->body = explode("\r\n\r\n",$data->body,2)[1];
}
$this->items[] = $this->bodyDeCode($data);
... ...