首页 > 网站 > 建站经验 > 正文

PHP利用Mail_MimeDecode类提取邮件正文

2024-04-25 20:30:53
字体:
来源:转载
供稿:网友

 根据主流的邮件解析类Mail_MimeDecode,提取邮件正文。如有问题请指教。

 
  1. #获取邮件正文  
  2. #[path] 邮件路径  
  3. function getMailBody($path){  
  4.     if(!is_file($path)) return false;  
  5.     $contents_c = file_get_contents($path);  
  6.     if(empty($contents_c)) return false;  
  7.     $mmd_c = new Mail_mimeDecode($contents_c);  //创建Mail_mimeDecode类的实例  
  8.   
  9.     $sr = $mmd_c->decode(array (  
  10.         'include_bodies' => true,  //是否包含邮件正文  
  11.         'decode_bodies' => false,    
  12.         'decode_headers' => true  
  13.     ));  
  14.   
  15.     unset($mail_part);  
  16.     $mail_part = getMailPart($sr);  
  17.   
  18.     $mail_code = $mail_part->headers;  
  19.     $mail_code = empty($mail_code['content-transfer-encoding'])?'':$mail_code['content-transfer-encoding']; //编码格式  
  20.     $mail_type = $mail_part->ctype_parameters;  
  21.     $mail_type = empty($mail_type['charset'])?'GBK':$mail_type['charset'];  
  22.     $mail_body = $mail_part->body; //正文内容  
  23.   
  24.      if ($mail_code == "base64") { //判断编码格式,受'decode_bodies'影响  
  25.         $text = base64_decode("$mail_body");  
  26.         $text = iconv("$mail_type""UTF-8"$text);  
  27.     } else {  
  28.         $text = quoted_printable_decode("$mail_body");  
  29.         $text = iconv("$mail_type""UTF-8"$text);  
  30.     }  
  31.     $body = $text;  
  32.   
  33.     return $body;  
  34. }  
  35.   
  36. function getMailPart($sr){  
  37.     $accept_primary = array("multipart""text""message");  //允许显示的邮件主要正文,过滤image等附件格式  
  38.     if (property_exists($sr'parts')) {  
  39.         $mail_part = $sr->parts;  
  40.         foreach($mail_part as $k => $m_part){  
  41.             if(in_array($m_part->ctype_primary, $accept_primary)){  
  42.                 if($m_part->ctype_secondary == "html"){  
  43.                     $mail_part = $m_part;  
  44.                     break;  
  45.                 }else{  
  46.                     $mail_part = &getMailPart($m_part);  
  47.                 }//end if  
  48.             }//end if  
  49.         }//end for  
  50.     } else {  
  51.         $mail_part = $sr;  
  52.     }//end if  
  53.     return $mail_part;  
  54. }  
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表