目次
php读取eml实例、php解析eml、eml解析成网页
ホームページ php教程 php手册 php读取eml实例、php解析eml、eml解析成网页

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

Jun 13, 2016 am 09:15 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; 
}

?>
ログイン後にコピー

 

有图有真相:

 

 

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

EdgeブラウザのショートカットとしてWebページをデスクトップに送信するにはどうすればよいですか? EdgeブラウザのショートカットとしてWebページをデスクトップに送信するにはどうすればよいですか? Mar 14, 2024 pm 05:22 PM

Edge ブラウザのショートカットとして Web ページをデスクトップに送信するにはどうすればよいですか?多くのユーザーは、アクセスページを直接開くことができるように、頻繁に使用する Web ページをデスクトップにショートカットとして表示したいと考えていますが、その方法がわかりません。この問題に応えて、この号の編集者は大多数のユーザーが解決策を考えているので、今日のソフトウェア チュートリアルで共有されているコンテンツを見てみましょう。 Edge ブラウザで Web ページをデスクトップに送信するショートカット方法: 1. ソフトウェアを開き、ページ上の「...」ボタンをクリックします。 2. ドロップダウン メニュー オプションから [アプリケーション] で [このサイトをアプリケーションとしてインストールする] を選択します。 3. 最後に、ポップアップウィンドウでそれをクリックします

Web ページ上の画像を読み込めない場合はどうすればよいですか? 6つのソリューション Web ページ上の画像を読み込めない場合はどうすればよいですか? 6つのソリューション Mar 15, 2024 am 10:30 AM

一部のネチズンは、ブラウザの Web ページを開いたときに、Web ページ上の画像が長時間読み込めないことに気づきました。何が起こったのでしょうか?ネットワークは正常であることを確認しましたが、どこに問題があるのでしょうか?以下のエディタでは、Web ページの画像が読み込めない問題に対する 6 つの解決策を紹介します。 Web ページの画像を読み込めない: 1. インターネット速度の問題 Web ページに画像が表示されません。これは、コンピュータのインターネット速度が比較的遅く、コンピュータ上で開いているソフトウェアが多いためと考えられます。また、アクセスする画像が比較的大きいため、読み込みタイムアウトが原因である可能性があります。その結果、画像が表示されません。ネットワーク速度をより多く消費するソフトウェアをオフにすることができます。タスク マネージャーに移動して確認できます。 2. 訪問者が多すぎる Web ページに写真が表示されない場合は、訪問した Web ページが同時に訪問されたことが原因である可能性があります。

Webページの自動更新を設定する方法 Webページの自動更新を設定する方法 Oct 26, 2023 am 10:52 AM

Web ページの自動更新を設定するには、HTML の「meta」タグ、JavaScript の「setTimeout」関数、「setInterval」関数、または HTTP の「Refresh」ヘッダーを使用できます。詳細な紹介: 1. HTML の「meta」タグを使用します。HTML ドキュメントの「<head>」タグで、「meta」タグを使用して Web ページの自動更新を設定できます。2. 「setTimeout」 JavaScriptの「機能」など

Webページにアクセスできない場合の対処方法 Webページにアクセスできない場合の対処方法 Sep 06, 2023 am 09:36 AM

アクセスできない Web ページの解決策には、ネットワーク接続の確認、ブラウザのキャッシュのクリア、Web ページのアドレスの確認、他のブラウザの使用の試行、サーバーのステータスの確認、ドメイン名の解決の確認、ファイアウォールとセキュリティの設定の確認、Web サイト管理者への連絡などが含まれます。 。詳細な紹介: 1. ネットワーク接続をチェックして、ネットワーク接続が正常であることを確認します。他の Web ページを開いたり、他のデバイスを使用してアクセスしたりして、ネットワーク接続に問題があるかどうかを判断できます。他の Web ページに正常にアクセスできるかどうかを確認します。 、Webページに問題がある可能性があります; 2.ブラウザのキャッシュをクリアする. ブラウザのキャッシュにより、Webページの読み込みに失敗するなどの原因となる場合があります。

ネットワーク接続は正常であるにもかかわらず、ブラウザが Web ページにアクセスできない場合の考えられる理由 ネットワーク接続は正常であるにもかかわらず、ブラウザが Web ページにアクセスできない場合の考えられる理由 Feb 19, 2024 pm 03:45 PM

ブラウザは Web ページを開けませんが、ネットワークは正常です。多くの理由が考えられます。この問題が発生した場合は、段階的に調査して具体的な原因を特定し、問題を解決する必要があります。まず、Web ページを開けないのは特定のブラウザに限定されているのか、それともすべてのブラウザで Web ページを開けないのかを判断します。 1 つのブラウザだけで Web ページを開けない場合は、テストのために Google Chrome、Firefox などの他のブラウザを使用してみることができます。他のブラウザでページを正しく開くことができる場合、問題はその特定のブラウザにある可能性があります。

Webページが開けない場合の対処法 Webページが開けない場合の対処法 Feb 21, 2024 am 10:24 AM

Web ページが開かない問題を解決する方法 インターネットの急速な発展に伴い、人々は情報を取得し、通信し、娯楽するためにますますインターネットに依存するようになりました。しかし、時々Webページが開けないという問題に遭遇し、多くのトラブルを引き起こします。この記事では、Web ページが開かない問題を解決するための一般的な方法をいくつか紹介します。まず、Web ページを開けない理由を特定する必要があります。考えられる原因には、ネットワークの問題、サーバーの問題、ブラウザの設定の問題などが含まれます。以下にいくつかの解決策を示します: ネットワーク接続を確認します: まず、

WebページでPHPを開く方法 WebページでPHPを開く方法 Mar 22, 2024 pm 03:20 PM

Web ページで PHP コードを実行するには、Web サーバーが PHP をサポートし、適切に構成されていることを確認する必要があります。 PHP は 3 つの方法で開くことができます。 * **サーバー環境:** PHP ファイルをサーバーのルート ディレクトリに配置し、ブラウザを通じてアクセスします。 * **統合開発環境: **PHP ファイルを指定した Web ルート ディレクトリに配置し、ブラウザを通じてアクセスします。 * **リモート サーバー:** サーバーによって提供される URL アドレスを介して、リモート サーバー上でホストされている PHP ファイルにアクセスします。

JavaScript を使用して Web ページの下部にある固定ナビゲーション バーを表示または非表示にする方法は? JavaScript を使用して Web ページの下部にある固定ナビゲーション バーを表示または非表示にする方法は? Oct 19, 2023 am 09:04 AM

JavaScript を使用して Web ページの下部にある固定ナビゲーション バーを表示または非表示にする方法は? Web デザインでは、固定ナビゲーション バーは、Web サイトにアクセスするためのクイック ナビゲーション機能をユーザーに提供する一般的なデザイン要素です。ユーザーがページをスクロールすると、ナビゲーション バーをページの下部に固定して、継続的なナビゲーション サービスを提供できます。この記事では、JavaScript を使用してこの効果を実現する方法を紹介し、具体的なコード例を示します。 Web ページの下部にある固定ナビゲーション バーの表示と非表示の効果を実現するには、次の手順に分けることができます。

See all articles