正在显示
1 个修改的文件
包含
51 行增加
和
1 行删除
| @@ -589,7 +589,7 @@ class Imap { | @@ -589,7 +589,7 @@ class Imap { | ||
| 589 | unset($result[$key]); | 589 | unset($result[$key]); |
| 590 | continue; | 590 | continue; |
| 591 | } | 591 | } |
| 592 | - $result[$key]['HEADER.FIELDS'] = $this->parseHeader($item['HEADER.FIELDS']); | 592 | + $result[$key]['HEADER.FIELDS'] = $this->imap_header_parse($item['HEADER.FIELDS']); |
| 593 | // 编码问题 | 593 | // 编码问题 |
| 594 | preg_match('/\("charset" "([a-z0-9\-]{3,})"\)/iU',$result[$key]['BODYSTRUCTURE'],$charset); | 594 | preg_match('/\("charset" "([a-z0-9\-]{3,})"\)/iU',$result[$key]['BODYSTRUCTURE'],$charset); |
| 595 | // 编码 | 595 | // 编码 |
| @@ -670,6 +670,56 @@ class Imap { | @@ -670,6 +670,56 @@ class Imap { | ||
| 670 | } | 670 | } |
| 671 | 671 | ||
| 672 | 672 | ||
| 673 | + | ||
| 674 | + /** | ||
| 675 | + * 其中的一种解法,不知有没有什么bug | ||
| 676 | + * 解析原始 header 头信息 | ||
| 677 | + * @param string $header | ||
| 678 | + * @return array | ||
| 679 | + * @author:dc | ||
| 680 | + * @time 2023/6/25 17:48 | ||
| 681 | + */ | ||
| 682 | + public function imap_header_parse(string $header){ | ||
| 683 | + $newArr = []; | ||
| 684 | + // 分割组成 每一行 | ||
| 685 | + foreach (explode("\n",$header) as $item){ | ||
| 686 | + if(str_starts_with($item,' ') || str_starts_with($item,"\t")){ | ||
| 687 | + $newArr[count($newArr)-1][] = $item; | ||
| 688 | + }else{ | ||
| 689 | + $newArr[][] = $item; | ||
| 690 | + } | ||
| 691 | + } | ||
| 692 | + // 新的数组 | ||
| 693 | + // 新的数组 | ||
| 694 | + foreach ($newArr as $k=>$item){ | ||
| 695 | + $item = implode("\n",$item); | ||
| 696 | + $item = explode(':',$item); | ||
| 697 | + // 剔除key的值 | ||
| 698 | + $item_str = ltrim(implode(':',$item),$item[0].':'); | ||
| 699 | + // 解析编码 | ||
| 700 | + $item_str = mb_decode_mimeheader($item_str); | ||
| 701 | + | ||
| 702 | +// $key = str_replace('-','_',strtolower($item[0])); | ||
| 703 | + $key = $item[0]; | ||
| 704 | + | ||
| 705 | + // 可能出现重复的,且值不一样 | ||
| 706 | + if(isset($newArr[$key])){ | ||
| 707 | + if(is_string($newArr[$key])){ | ||
| 708 | + $newArr[$key] = [$newArr[$key]]; | ||
| 709 | + } | ||
| 710 | + $newArr[$key][] = $item_str; | ||
| 711 | + }else{ | ||
| 712 | + $newArr[$key] = $item_str; | ||
| 713 | + } | ||
| 714 | + | ||
| 715 | + unset($newArr[$k]); | ||
| 716 | + } | ||
| 717 | + | ||
| 718 | + return $newArr; | ||
| 719 | + } | ||
| 720 | + | ||
| 721 | + | ||
| 722 | + | ||
| 673 | /** | 723 | /** |
| 674 | * 获取邮件内容,包括附件 | 724 | * 获取邮件内容,包括附件 |
| 675 | * @param mixed $data 1,1:10,[1,2,3] | 725 | * @param mixed $data 1,1:10,[1,2,3] |
-
请 注册 或 登录 后发表评论