目录
php读取eml实例、php解析eml、eml解析成网页
首页 后端开发 php教程 php读取eml实例、php解析eml、eml解析成网页_PHP教程

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

Jul 13, 2016 am 10:07 AM
实例 网页

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

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

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

 

 

<!--?php

// Author: richard e42083458@163.com
// gets parameters



error_reporting(E_ALL ^ (E_WARNING|E_NOTICE));
header(Content-type: text/html; charset=utf-8);

echo <pre class="code">;

define(EML_FILE_PATH,&#39;./yjdata/&#39;);

//if ($filename == &#39;&#39;) $filename = &#39;21724696_niuyufu@qiaodazhao.com_ZC4422-r7GMz_R9QF3K6XUhmJOXd4c.eml&#39;;
//if ($filename == &#39;&#39;) $filename = &#39;21724696_niuyufu@qiaodazhao.com_ZC3218-dGquMgm7ytdF6HQgpSReC4c.eml&#39;;
//if ($filename == &#39;&#39;) $filename = &#39;163.eml&#39;;
//if ($filename == &#39;&#39;) $filename = &#39;166.eml&#39;;
//if ($filename == &#39;&#39;) $filename = &#39;nyf.eml&#39;;
//if ($filename == &#39;&#39;) $filename = &#39;email_header_icon.eml&#39;;
if ($filename == &#39;&#39;) $filename = &#39;20141230133705.eml&#39;;

$eml_file = EML_FILE_PATH.$filename;

if (!($content = fread(fopen(EML_FILE_PATH.$filename, &#39;rb&#39;), filesize(EML_FILE_PATH.$filename))))
    die(&#39;File not found (&#39;.EML_FILE_PATH.$filename.&#39;)&#39;);
    
//标题内容
$pattern=/Subject: (.*?)
/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 

;
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:(.*?)
/ims;
	preg_match($pattern,$content,$to_results);
	$to = $to_results[1];
}
echo 

;
echo 收件人:;
print_r($to);
echo 

;

//正文内容
$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=(.*?)
Content-Transfer-Encoding: (.*?)
/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], &#39;UTF-8&#39;, 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]==&#39;text/html&#39;){
		$content_html = $email_front_content_each_value[5];
		break;
	}else{
		$content_html = $email_front_content_each_value[5];
	}
}

echo 内容:;
echo 

;
echo $content_html;
echo 

;

//附件内容
$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=(.*?)
Content-Transfer-Encoding: (.*?)
Content-Disposition: attachment;.*?filename=(.*?)
/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], &#39;.&#39;)!==false){
		  		$ext = substr($item_results[8], strrpos($item_results[8], &#39;.&#39;) + 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&#39;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 

;
	
	//附件读取
	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, &#39;UTF-8&#39;, $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; 
}

?>
登录后复制

 

有图有真相:

\

 

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/953327.htmlTechArticlephp读取eml实例、php解析eml、eml解析成网页 php读取eml实例,本实例可以将导出eml文件解析成正文,并且可以将附件保存到服务器。不多说直接...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Edge浏览器怎么将网页用快捷方式发送到桌面? Edge浏览器怎么将网页用快捷方式发送到桌面? Mar 14, 2024 pm 05:22 PM

  Edge浏览器怎么将网页用快捷方式发送到桌面?我们很多用户为了方便直接打开访问页面,想要将经常使用的网页以快捷方式的形式显示在桌面,但是不知道应该如何操作,针对这个问题,本期小编就来和广大用户们分享解决方法,一起来看看今日软件教程分享的内容吧。  Edge浏览器将网页发送到桌面快捷方式方法:  1、打开软件,点击页面中的“...”按钮。  2、在下拉菜单选项中选择“应用”中的“将此站点作为应用安装”。  3、最后在弹出的窗口中将其

网页自动刷新设置方法 网页自动刷新设置方法 Oct 26, 2023 am 10:52 AM

设置网页的自动刷新可以使用HTML的“meta”标签、JavaScript的“setTimeout”函数、“setInterval”函数或HTTP的”Refresh“头。详细介绍:1、使用HTML的“meta”标签,在HTML文档的“<head>”标签中,可以使用“meta”标签来设置网页的自动刷新;2、JavaScript的“setTimeout”函数等等。

网页图片加载不出来怎么办?6种解决办法 网页图片加载不出来怎么办?6种解决办法 Mar 15, 2024 am 10:30 AM

  有网友发现打开浏览器网页,网页上的图片迟迟加载不出来,是怎么回事?检查过网络是正常的,那是哪里出现了问题呢?下面小编就给大家介绍一下网页图片加载不出来的六种解决方法。  网页图片加载不出来:  1、网速问题  网页显示不出图片有可能是因为电脑的网速比较慢,电脑中开启的软件比较多,  而我们访问的图片比较大,这就可能因为加载超时,导致图片显示不出来,  可以将比较占网速的软件将关掉,可以去任务管理器查看一下。  2、访问人数过多  网页显示不出图片还有可能是因为我们访问的网页,在同时间段访问的

网页无法访问怎么办 网页无法访问怎么办 Sep 06, 2023 am 09:36 AM

网页无法访问的解决办法有检查网络连接、清除浏览器缓存、检查网页地址、尝试使用其他浏览器、检查服务器状态、检查域名解析、检查防火墙和安全设置和联系网站管理员等。详细介绍:1、检查网络连接,确保网络连接正常,可以尝试打开其他网页或者使用其他设备进行访问,确定是否是网络连接问题,如果其他网页可以正常访问,那么可能是该网页的问题;2、清除浏览器缓存,浏览器缓存可能导致网页无法加载等等。

网络连接正常但浏览器无法访问网页可能原因 网络连接正常但浏览器无法访问网页可能原因 Feb 19, 2024 pm 03:45 PM

浏览器打不开网页但是网络正常,可能的原因是多种多样的。在该问题出现时,我们需要逐步排查,才能确定具体的原因并解决问题。首先,确定网页打不开的现象是局限于某个特定的浏览器还是所有浏览器都无法打开网页。如果只有一个浏览器无法打开网页,可以尝试使用其他浏览器,如谷歌浏览器、火狐浏览器等进行测试。如果其他浏览器能够正常打开网页,那么问题很可能出在该特定浏览器上,可能

网页打不开怎么解决 网页打不开怎么解决 Feb 21, 2024 am 10:24 AM

网页打不开怎么解决随着互联网的快速发展,人们越来越依赖于互联网来获取信息、进行交流和娱乐。然而,有时我们会遇到网页打不开的问题,这给我们带来了很多困扰。本文将为大家介绍一些常见的方法,帮助解决网页打不开的问题。首先,我们需要确定是由于什么原因导致网页打不开。可能的原因包括网络问题、服务器问题、浏览器设置问题等。下面是一些解决方法:检查网络连接:首先,我们需要

php怎么在网页打开 php怎么在网页打开 Mar 22, 2024 pm 03:20 PM

在网页中执行 PHP 代码需要确保 Web 服务器支持并已正确配置 PHP。可以通过三种方式打开 PHP: * **服务器环境:**将 PHP 文件放置在服务器根目录并通过浏览器访问。 * **集成开发环境:**将 PHP 文件放置在指定 Web 根目录并通过浏览器访问。 * **远程服务器:**通过服务器提供的 URL 地址访问托管在远程服务器上的 PHP 文件。

如何使用 JavaScript 实现网页底部固定导航栏的显示隐藏效果? 如何使用 JavaScript 实现网页底部固定导航栏的显示隐藏效果? Oct 19, 2023 am 09:04 AM

如何使用JavaScript实现网页底部固定导航栏的显示隐藏效果?在网页设计中,固定导航栏是一种常见的设计元素,它可以为用户提供快速访问网站的导航功能。当用户滚动页面时,导航栏可以固定在页面底部,提供持续的导航服务。本文将介绍如何使用JavaScript实现这一效果,并提供具体的代码示例。实现网页底部固定导航栏的显示隐藏效果,可以分为以下几个步骤:步

See all articles