正在显示
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] |
-
请 注册 或 登录 后发表评论