作者 邓超

xxx

@@ -773,6 +773,14 @@ class Imap { @@ -773,6 +773,14 @@ class Imap {
773 // 取得body 773 // 取得body
774 $result = $this->fetch($data,'body',$is_uid); 774 $result = $this->fetch($data,'body',$is_uid);
775 foreach ($result as $key=>$item){ 775 foreach ($result as $key=>$item){
  776 + // 兼容 有的邮箱 不支持 RFC822.TEXT
  777 + if (empty($item['RFC822.TEXT']) && !empty($item['RFC822'])){
  778 + $item['RFC822.TEXT'] = $item['RFC822'];
  779 + $item['RFC822.TEXT'] = explode("\r\n\r\n",$item['RFC822.TEXT']);
  780 + unset($item['RFC822.TEXT'][0]);
  781 + $item['RFC822.TEXT'] = implode("\r\n\r\n",$item['RFC822.TEXT']);
  782 + }
  783 +
776 if (!empty($item['RFC822.TEXT'])){ 784 if (!empty($item['RFC822.TEXT'])){
777 $header = $this->fetchHeader($item['UID'],1); 785 $header = $this->fetchHeader($item['UID'],1);
778 $header = array_values($header); 786 $header = array_values($header);
@@ -934,6 +942,21 @@ class Imap { @@ -934,6 +942,21 @@ class Imap {
934 } 942 }
935 break; 943 break;
936 } 944 }
  945 + // 这个是整体 包含了邮件头 RFC822.HEADER 和 RFC822.TEXT body内容
  946 + case 'RFC822':{
  947 + array_shift($header);
  948 + $result['RFC822'] = trim(implode(' ',$header));
  949 + $header = [];
  950 + // 微软的邮箱有毛病
  951 + $endLine = explode("\n",$result['RFC822']);
  952 + $endLine = trim(end($endLine));
  953 + if(preg_match("/^UID\s\d+\sFLAGS\s\(.*\)$/iU",$endLine)){
  954 + $arr = $this->parseFetch($endLine);
  955 + $result = array_merge($result,$arr);
  956 + $result['RFC822'] = mb_substr($result['RFC822'],0,-mb_strlen($endLine));
  957 + }
  958 + break;
  959 + }
937 case 'RFC822.HEADER':{ 960 case 'RFC822.HEADER':{
938 array_shift($header); 961 array_shift($header);
939 $result['RFC822.HEADER'] = implode(' ',$header); 962 $result['RFC822.HEADER'] = implode(' ',$header);