php读取eml范例、php解析eml、eml解析成网页

WBOY
Freigeben: 2016-06-13 12:13:37
Original
1216 Leute haben es durchsucht

php读取eml实例、php解析eml、eml解析成网页

php读取eml实例,本实例可以将导出eml文件解析成正文,并且可以将附件保存到服务器。不多说直接贴代码了。

如果你觉得此代码不错,请点个赞。谢谢~~~~


<?php // Author: richard [email&#160;protected]// gets parameterserror_reporting(E_ALL ^ (E_WARNING|E_NOTICE));header("Content-type: text/html; charset=utf-8");echo "<pre class="brush:php;toolbar:false">";define(EML_FILE_PATH,'./yjdata/');//if ($filename == '') $filename = '[email protected]_ZC4422-r7GMz_R9QF3K6XUhmJOXd4c.eml';//if ($filename == '') $filename = '[email protected]_ZC3218-dGquMgm7ytdF6HQgpSReC4c.eml';//if ($filename == '') $filename = '163.eml';//if ($filename == '') $filename = '166.eml';//if ($filename == '') $filename = 'nyf.eml';//if ($filename == '') $filename = 'email_header_icon.eml';if ($filename == '') $filename = '20141230133705.eml';$eml_file = EML_FILE_PATH.$filename;if (!($content = fread(fopen(EML_FILE_PATH.$filename, 'rb'), filesize(EML_FILE_PATH.$filename))))    die('File not found ('.EML_FILE_PATH.$filename.')');    //标题内容$pattern="/Subject: (.*?)\n/ims";preg_match($pattern,$content,$subject_results);$subject = getdecodevalue($subject_results[1]);echo "标题:".$subject;//发件人:$pattern="/From: .*?/ims";preg_match($pattern,$content,$from_results);$from = $from_results[1];echo "\n\r";echo "发件人:".$from;//收件人:$pattern="/To:(.*?):/ims";preg_match($pattern,$content,$to_results);$pattern="//ims";preg_match_all($pattern,$to_results[1],$to_results2);if(count($to_results2[1])>0){	$to = $to_results2[1];}else{	$pattern="/To:(.*?)\n/ims";	preg_match($pattern,$content,$to_results);	$to = $to_results[1];}echo "\n\r";echo "收件人:";print_r($to);echo "\n\r";//正文内容$pattern = "/Content-Type: multipart\/alternative;.*?boundary=\"(.*?)\"/ims";preg_match($pattern,$content,$results);if($results[1]!=""){	$seperator = "--".$results[1];}else{	die("boundary匹配失败");}$spcontent = explode($seperator, $content);$items = array();$keyid = 0;$email_front_content_array = array();foreach($spcontent as $spkey=>$item) {	//匹配header编码等信息  	$pattern = "/Content-Type: ([^;]*?);.*?charset=(.*?)\nContent-Transfer-Encoding: (.*?)\n/ims";  	preg_match($pattern,$item,$item_results);  	  	if(count($item_results)==4){  		$Content_code = str_replace($item_results[0],"",$item);  		$item_results[4] = $Content_code;  	  		if(trim($item_results[3])=="base64"){  			$item_results[5] = base64_decode($item_results[4]);  		}  		if(trim($item_results[3])=="quoted-printable"){  			$item_results[5] = quoted_printable_decode($item_results[4]);  		}  		$item_results[5] = mb_convert_encoding($item_results[5], 'UTF-8', trim($item_results[2]));  		  		//echo $item_results[5];exit;  		$email_front_content_array[] = $item_results;  	}}foreach ($email_front_content_array as $email_front_content_each_key=>$email_front_content_each_value){	if($email_front_content_each_value[1]=='text/html'){		$content_html = $email_front_content_each_value[5];		break;	}else{		$content_html = $email_front_content_each_value[5];	}}echo "内容:";echo "\n\r";echo $content_html;echo "\n\r";//附件内容$pattern = "/Content-Type: multipart\/mixed;.*?boundary=\"(.*?)\"/ims";preg_match($pattern,$content,$results);if($results[1]!=""){	$seperator = "--".$results[1];		$spcontent = explode($seperator, $content);	$items = array();	$keyid = 0;		$email_attachment_content_array = array();	foreach($spcontent as $spkey=>$item) {		//匹配header编码等信息	  	$pattern = "/Content-Type: ([^;]*?);.*?name=(.*?)\nContent-Transfer-Encoding: (.*?)\nContent-Disposition: attachment;.*?filename=(.*?)\n/ims";	  	preg_match($pattern,$item,$item_results);	  	//print_r($item_results);	  	if(count($item_results)==5){	  		$Content_code = str_replace($item_results[0],"",$item);	  		$item_results[5] = trim($Content_code);	  			  		if(trim($item_results[3])=="base64"){	  			$item_results[6] = base64_decode($item_results[5]);	  		}	  		if(trim($item_results[3])=="quoted-printable"){	  			$item_results[6] = quoted_printable_decode($item_results[5]);	  		}	  			  		$item_results[7] = str_replace("\"","",getdecodevalue($item_results[2]));	  			  		$item_results[8] = str_replace("\"","",getdecodevalue($item_results[4]));		  			  		//保存附件内容到服务器?	  		//符合规范的文件名时:有后缀名时。	  		if(strrpos($item_results[8], '.')!==false){		  		$ext = substr($item_results[8], strrpos($item_results[8], '.') + 1);		  			  				  		//$filename = "./yjdata/attachment/".date("YmdHis").mt_rand(10000,99999).".".trim($ext);		  		$attachment_filename = "./yjdata/attachment/".trim(str_replace("\"","",getbase64code($item_results[4]))).".".trim($ext);		  		mkdirs(dirname($attachment_filename));		  		$fp = fopen($attachment_filename, "w+");				if (flock($fp, LOCK_EX)) { // 进行排它型锁定				    fwrite($fp, $item_results[6]);				    flock($fp, LOCK_UN); // 释放锁定				} else {				    //echo "Couldn't lock the file !";				}				fclose($fp);								$item_results[9] = $attachment_filename;				$email_attachment_content_array[] = $item_results;	  		}	  	}	}	//print_r($email_attachment_content_array);}if(count($email_attachment_content_array)>0){	echo "附件:";	echo "\n\r";		//附件读取	foreach($email_attachment_content_array as $email_attachment_content_each_key=>$email_attachment_content_each_value){		unset($email_attachment_content_each_value[5]);		unset($email_attachment_content_each_value[6]);		print_r($email_attachment_content_each_value[8]);		print_r($email_attachment_content_each_value[9]);	}}function getbase64code($content){	$pattern="/=\?GB2312\?B\?(.*?)\?=|=\?GBK\?B\?(.*?)\?=|=\?UTF-8\?B\?(.*?)\?=/ims";	preg_match($pattern,$content,$subject_results);	if($subject_results[1]!=""){		$subject = $subject_results[1];		$charset = "GB2312";	}	elseif($subject_results[2]!=""){		$subject = $subject_results[2];		$charset = "GBK";	}	elseif($subject_results[3]!=""){		$subject = $subject_results[3];		$charset = "UTF-8";	}else{		$subject = $content;		$charset = "";	}	return $subject;}function getdecodevalue($content){	$pattern="/=\?GB2312\?B\?(.*?)\?=|=\?GBK\?B\?(.*?)\?=|=\?UTF-8\?B\?(.*?)\?=/ims";	preg_match($pattern,$content,$subject_results);	if($subject_results[1]!=""){		$subject = base64_decode($subject_results[1]);		$charset = "GB2312";	}	elseif($subject_results[2]!=""){		$subject = base64_decode($subject_results[2]);		$charset = "GBK";	}	elseif($subject_results[3]!=""){		$subject = base64_decode($subject_results[3]);		$charset = "UTF-8";	}else{		$subject = $content;		$charset = "";	}	if($charset!=""){		$subject = mb_convert_encoding($subject, 'UTF-8', $charset);	}	return $subject;}function mkdirs($dir){    if(!is_dir($dir))    {	    if(!mkdirs(dirname($dir))){	   		return false;    	}		if(!mkdir($dir,0777)){		    return false;	    }    }    chmod($dir, 777);    //给目录操作权限    return true; }?>
Nach dem Login kopieren

有图有真相:


代码下载:

http://download.csdn.net/detail/e421083458/8365495


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage