PHP利用Mail_MimeDecode类提取邮件正文
时间:2014-02-17 11:16作者:qazwsxzxc人气:89
根据主流的邮件解析类Mail_MimeDecode,提取邮件正文。如有问题请指教。
- #获取邮件正文
- #[path] 邮件路径
- function getMailBody($path){
- if(!is_file($path)) return false;
- $contents_c = file_get_contents($path);
- if(empty($contents_c)) return false;
- $mmd_c = new Mail_mimeDecode($contents_c);
-
- $sr = $mmd_c->decode(array (
- 'include_bodies' => true,
- 'decode_bodies' => false,
- 'decode_headers' => true
- ));
-
- unset($mail_part);
- $mail_part = getMailPart($sr);
-
- $mail_code = $mail_part->headers;
- $mail_code = empty($mail_code['content-transfer-encoding'])?'':$mail_code['content-transfer-encoding'];
- $mail_type = $mail_part->ctype_parameters;
- $mail_type = empty($mail_type['charset'])?'GBK':$mail_type['charset'];
- $mail_body = $mail_part->body;
-
- if ($mail_code == "base64") {
- $text = base64_decode("$mail_body");
- $text = iconv("$mail_type", "UTF-8", $text);
- } else {
- $text = quoted_printable_decode("$mail_body");
- $text = iconv("$mail_type", "UTF-8", $text);
- }
- $body = $text;
-
- return $body;
- }
-
- function getMailPart($sr){
- $accept_primary = array("multipart", "text", "message");
- if (property_exists($sr, 'parts')) {
- $mail_part = $sr->parts;
- foreach($mail_part as $k => $m_part){
- if(in_array($m_part->ctype_primary, $accept_primary)){
- if($m_part->ctype_secondary == "html"){
- $mail_part = $m_part;
- break;
- }else{
- $mail_part = &getMailPart($m_part);
- }
- }
- }
- } else {
- $mail_part = $sr;
- }
- return $mail_part;
- }
标签PHP利用Mail_MimeDecode类提取邮件正文
网友评论