作者 邓超

m

@@ -68,7 +68,10 @@ class Body { @@ -68,7 +68,10 @@ class Body {
68 */ 68 */
69 private function parseBoundaryBody(string $body, string $boundary){ 69 private function parseBoundaryBody(string $body, string $boundary){
70 // 切割成块 boundary 的结束符号 前后都会多2个-- 70 // 切割成块 boundary 的结束符号 前后都会多2个--
71 - $items = explode($boundary, 71 + // 为什么要加 \r\n在签名进行切割呢 是因为 boundary分割符只会占单独的一行,
  72 + //有一些服务商会把header头一起返回,header里面包含了这个符号,
  73 + //如果不加\r\n 就会导致 切割异常
  74 + $items = explode("\r\n".$boundary,
72 str_replace(['--'.$boundary.'--', $boundary.'--','--'.$boundary],$boundary,$body) 75 str_replace(['--'.$boundary.'--', $boundary.'--','--'.$boundary],$boundary,$body)
73 ); 76 );
74 // 第一个块和最后一块 是没用的块 77 // 第一个块和最后一块 是没用的块
@@ -167,6 +170,7 @@ class Body { @@ -167,6 +170,7 @@ class Body {
167 break; 170 break;
168 } 171 }
169 case '8bit':{ 172 case '8bit':{
  173 + $data->body = mb_decode_mimeheader($data->body);
170 break; 174 break;
171 } 175 }
172 } 176 }