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

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

// Author: richard [email protected]

// gets parameters

error_reporting(E_ALL ^ (E_WARNING|E_NOTICE));

header("Content-type: text/html; charset=utf-8");

echo "

";

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;

}

?>

有图有真相:

代码下载:

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

原文:http://blog.csdn.net/e421083458/article/details/42745319

php 处理eml,php读取eml实例、php解析eml、eml解析成网页相关推荐

  1. 【代码审计】任意文件读取漏洞实例

    0x00 前言 大多数网站都提供读取文件功能,一般实现过程是,根据参数filename的值,获得该文件在网站上的绝对路径,读取文件. 这里,通过两个任意文件读取漏洞实例去展示漏洞原理.漏洞危害. 0x ...

  2. python处理excel实例编程_python读取Excel实例详解

    本文实例为大家分享了python读取Excel实例的具体代码,供大家参考,具体内容如下 1.操作步骤: (1)安装python官方Excel库-->xlrd (2)获取Excel文件位置并读取 ...

  3. eml格式是什么格式文件?如何打开eml文件?

    2019独角兽企业重金招聘Python工程师标准>>> eml格式是什么格式文件?eml文件是一个电子邮件文件,就是电子邮件E-mail的缩写.可是有网友说eml文件打不开的情况,其 ...

  4. php读取mht,php解析mht文件转换成html的实例

    php解析mht文件转换成html的实例 发布于 2017-08-07 07:27:31 | 116 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertex ...

  5. 读取CSV文件内容,将其转换成JSON字符串输出

    CsvToJsonUtil 工具类作用:读取CSV文件内容,将其转换成JSON字符串输出 转换工具类代码如下: package com.test.util;import java.io.*; impo ...

  6. BCC实例(如何修改NS解析方式为百度智能云解析) - 解答篇

    文章目录 一.步骤: 二.部分步骤 · 截图示下: 三.添加解析方式: 四.附:解析记录类型含义 一.步骤: 进入百度智能云 后台控制台 "域名服务BCD" ; 进入 " ...

  7. web网页设计实例作业 ——中国茶文化(30页) HTML网页制作作品 简单文化网页设计成品 dreamweaver学生网站模板

    web网页设计实例作业 --中国茶文化(30页) HTML网页制作作品 简单文化网页设计成品 dreamweaver学生网站模板 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. 电商. ...

  8. div+css静态网页设计 web网页设计实例作业 ——中国茶文化(30页) HTML网页制作作品 简单文化网页设计成品 dreamweaver学生网站模板

    web网页设计实例作业 --中国茶文化(30页) HTML网页制作作品 简单文化网页设计成品 dreamweaver学生网站模板 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. 电商. ...

  9. Java 调用Google Map Api解析地址,解析经纬度实例

    Java 调用Google Map Api解析地址,解析经纬度实例 使用google地图的反向地址解析功能,提供一个经纬度得到对应地址,或者给出模糊地址,得到经纬度,放在java后台代码中处理,这个使 ...

  10. php解析mht,php解析mht文件转换成html的实例

    php解析mht文件,使用编辑器打开可以看到base64编码所以,mht是可以转换成html的. /** * 针对Mht格式的文件进行解析 * 使用例子: * * function mhtmlPars ...

最新文章

  1. Android进程间通信的方式
  2. 腾讯 JDK 11 正式开源,高性能、太牛逼啦!
  3. 5G 标准 — R17
  4. 视频监控/存储系统设计要点
  5. (仿头条APP项目)1.app载入界面相关功能实现
  6. 曙光中学2021年高考成绩查询,上海市部分高中2020高考录取喜报,成绩喜人!
  7. OJ1013: 求两点间距离
  8. linux hadoop etc目录,Hadoop系列——Linux下Hadoop的安装与伪分布式配置
  9. .NET高性能编程 - C#如何安全、高效地玩转任何种类的内存之Span的本质(一)。
  10. centos 7.2 配置Nginx
  11. 文件服务器存储解决方案探索
  12. 醒的越早,越焦虑,马上奔35了
  13. 链家数据爬取+地图找房
  14. Http Headers各属性简介及常见安全攻击
  15. 台式计算机强制关机,台式电脑强制关机按什么键
  16. iOS开发- 文件共享(利用iTunes导入文件, 并且显示已有文件)
  17. Java中的Swing概述
  18. 广播和多播,IGMP协议
  19. wxPython的 wx.App 和 wx.PySimpleApp 有什么区别,如何区别使用?
  20. 优傲机器人与合作伙伴联合推出自动焊接工作站

热门文章

  1. 删除鼠标右键多余的菜单
  2. 5分钟学会用代码发送邮件
  3. python修改植物大战僵尸阳光值
  4. 青岛胶州职业教育中心计算机基础专业证,胶州市职业教育中心学校着眼胶州发展大局,精准培养人才...
  5. 中文手机评论情感分类系列(三)
  6. 计算机网络——SMTP
  7. JWT全面解读、详细使用步骤
  8. 云服务器的带宽是什么意思?怎么选择带宽大小?
  9. 如何把握云计算时代风口 怎么能掌握云计算技术
  10. 【游戏客户端】制作节奏大师Like音游(上)