作者 邓超

x

@@ -254,6 +254,10 @@ class Body { @@ -254,6 +254,10 @@ class Body {
254 // $filename = MailFun::decodeMimeStr($filename[1]); 254 // $filename = MailFun::decodeMimeStr($filename[1]);
255 $filename = mb_decode_mimeheader($filename[1]); 255 $filename = mb_decode_mimeheader($filename[1]);
256 } 256 }
  257 + // 附件
  258 + if(stripos($item,'Content-Disposition: attachment;')!==false){
  259 + $isfileattachment = 1;
  260 + }
257 261
258 262
259 // 删除不需要的tag属性,如果需要进进行解析 263 // 删除不需要的tag属性,如果需要进进行解析
@@ -270,39 +274,44 @@ class Body { @@ -270,39 +274,44 @@ class Body {
270 } 274 }
271 // 是文本还是附件 275 // 是文本还是附件
272 else if(strpos($data['type'],'text/') === 0 ){ 276 else if(strpos($data['type'],'text/') === 0 ){
273 - // tag  
274 - $data['body'] = trim($this->body_remove_tag($data['body'],'Content-ID:'));  
275 -  
276 - $data['body'] = $this->body_remove_tag($data['body'],"Content-");  
277 - $data['body'] = $this->body_remove_tag($data['body'],"Content-");  
278 - $data['body'] = $this->body_remove_tag($data['body'],"Content-");  
279 - $data['body'] = $this->body_remove_tag($data['body'],"Content-");  
280 -  
281 - // body解密  
282 - switch($data['encode']??''){  
283 - case 'base64': {  
284 - $data['body'] = base64_decode($data['body']);  
285 - break;  
286 - }  
287 - case 'quoted-printable': {  
288 - $data['body'] = quoted_printable_decode($data['body']);  
289 - break;  
290 - }  
291 - case '8bit': {  
292 - try {  
293 -// $data['body'] = DeCoding::de8bit($data['body']);  
294 - // 暂时没有替换 imap_8bit的函数  
295 - $data['body'] = imap_8bit($data['body']);  
296 - $data['body'] = quoted_printable_decode($data['body']);  
297 - }catch (\Throwable $e){  
298 277
  278 + // 这里还有可能出现附件
  279 + if($filename&&!empty($isfileattachment)){
  280 + $data = $this->parseFile($data,$filename);
  281 + }else{
  282 + // tag
  283 + $data['body'] = trim($this->body_remove_tag($data['body'],'Content-ID:'));
  284 +
  285 + $data['body'] = $this->body_remove_tag($data['body'],"Content-");
  286 + $data['body'] = $this->body_remove_tag($data['body'],"Content-");
  287 + $data['body'] = $this->body_remove_tag($data['body'],"Content-");
  288 + $data['body'] = $this->body_remove_tag($data['body'],"Content-");
  289 +
  290 + // body解密
  291 + switch($data['encode']??''){
  292 + case 'base64': {
  293 + $data['body'] = base64_decode($data['body']);
  294 + break;
  295 + }
  296 + case 'quoted-printable': {
  297 + $data['body'] = quoted_printable_decode($data['body']);
  298 + break;
299 } 299 }
  300 + case '8bit': {
  301 + try {
  302 +// $data['body'] = DeCoding::de8bit($data['body']);
  303 + // 暂时没有替换 imap_8bit的函数
  304 + $data['body'] = imap_8bit($data['body']);
  305 + $data['body'] = quoted_printable_decode($data['body']);
  306 + }catch (\Throwable $e){
  307 +
  308 + }
300 309
301 - break; 310 + break;
  311 + }
302 } 312 }
303 - }  
304 313
305 - // 转码 314 + // 转码
306 // if(isset($data['charset']) && $data['charset']){ 315 // if(isset($data['charset']) && $data['charset']){
307 // $debody = @mb_convert_encoding($data['body'],'utf-8',$data['charset']); 316 // $debody = @mb_convert_encoding($data['body'],'utf-8',$data['charset']);
308 // if($debody){ 317 // if($debody){
@@ -310,6 +319,8 @@ class Body { @@ -310,6 +319,8 @@ class Body {
310 // $debody = null; 319 // $debody = null;
311 // } 320 // }
312 // } 321 // }
  322 + }
  323 +
313 324
314 325
315 } 326 }