作者 邓超

解析body bug

@@ -103,7 +103,17 @@ class Body { @@ -103,7 +103,17 @@ class Body {
103 /***************** start 第一行处理 **************/ 103 /***************** start 第一行处理 **************/
104 // 第一行 UID 1568602721 RFC822.TEXT {589} 104 // 第一行 UID 1568602721 RFC822.TEXT {589}
105 $first = explode(' ',$body[0]); 105 $first = explode(' ',$body[0]);
106 - while (1){ if(str_starts_with(array_shift($first), 'RFC822.')) break; } 106 + $rfc822 = true;
  107 + while (1){
  108 + $tempstr = array_shift($first);
  109 + if(str_starts_with($tempstr, 'RFC822')) {
  110 + // 是否是text 还是全部的包含header
  111 + if(str_contains($tempstr, '.')){
  112 + $rfc822 = false;
  113 + }
  114 + break;
  115 + }
  116 + }
107 $first = array_values($first); 117 $first = array_values($first);
108 $first[0] = preg_replace("/^\{\d+\}/",'',$first[0]); 118 $first[0] = preg_replace("/^\{\d+\}/",'',$first[0]);
109 // 第一行的结果就是 踢出 UID 1568602721 RFC822.TEXT {589} 119 // 第一行的结果就是 踢出 UID 1568602721 RFC822.TEXT {589}
@@ -119,6 +129,11 @@ class Body { @@ -119,6 +129,11 @@ class Body {
119 129
120 // 再次组装成字符串 130 // 再次组装成字符串
121 $data->body = trim(implode("\r\n",$body)); 131 $data->body = trim(implode("\r\n",$body));
  132 + // 是否包含header
  133 + if($rfc822){
  134 + // 删除header头信息这个是多余的
  135 + $data->body = explode("\r\n\r\n",$data->body,2)[1];
  136 + }
122 137
123 $this->items[] = $this->bodyDeCode($data); 138 $this->items[] = $this->bodyDeCode($data);
124 139