...
|
...
|
@@ -589,7 +589,7 @@ class Imap { |
|
|
unset($result[$key]);
|
|
|
continue;
|
|
|
}
|
|
|
$result[$key]['HEADER.FIELDS'] = $this->parseHeader($item['HEADER.FIELDS']);
|
|
|
$result[$key]['HEADER.FIELDS'] = $this->imap_header_parse($item['HEADER.FIELDS']);
|
|
|
// 编码问题
|
|
|
preg_match('/\("charset" "([a-z0-9\-]{3,})"\)/iU',$result[$key]['BODYSTRUCTURE'],$charset);
|
|
|
// 编码
|
...
|
...
|
@@ -670,6 +670,56 @@ class Imap { |
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 其中的一种解法,不知有没有什么bug
|
|
|
* 解析原始 header 头信息
|
|
|
* @param string $header
|
|
|
* @return array
|
|
|
* @author:dc
|
|
|
* @time 2023/6/25 17:48
|
|
|
*/
|
|
|
public function imap_header_parse(string $header){
|
|
|
$newArr = [];
|
|
|
// 分割组成 每一行
|
|
|
foreach (explode("\n",$header) as $item){
|
|
|
if(str_starts_with($item,' ') || str_starts_with($item,"\t")){
|
|
|
$newArr[count($newArr)-1][] = $item;
|
|
|
}else{
|
|
|
$newArr[][] = $item;
|
|
|
}
|
|
|
}
|
|
|
// 新的数组
|
|
|
// 新的数组
|
|
|
foreach ($newArr as $k=>$item){
|
|
|
$item = implode("\n",$item);
|
|
|
$item = explode(':',$item);
|
|
|
// 剔除key的值
|
|
|
$item_str = ltrim(implode(':',$item),$item[0].':');
|
|
|
// 解析编码
|
|
|
$item_str = mb_decode_mimeheader($item_str);
|
|
|
|
|
|
// $key = str_replace('-','_',strtolower($item[0]));
|
|
|
$key = $item[0];
|
|
|
|
|
|
// 可能出现重复的,且值不一样
|
|
|
if(isset($newArr[$key])){
|
|
|
if(is_string($newArr[$key])){
|
|
|
$newArr[$key] = [$newArr[$key]];
|
|
|
}
|
|
|
$newArr[$key][] = $item_str;
|
|
|
}else{
|
|
|
$newArr[$key] = $item_str;
|
|
|
}
|
|
|
|
|
|
unset($newArr[$k]);
|
|
|
}
|
|
|
|
|
|
return $newArr;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取邮件内容,包括附件
|
|
|
* @param mixed $data 1,1:10,[1,2,3]
|
...
|
...
|
|