PHP 解析Maildir 邮件格式(eml文件)
2016-12-28 15:29
661 查看
1.解析邮件头
2.根据文件名和ino号查找邮件文件
3.用parsemail函数
# $mailfile为邮件文件路径 function parsemail($mailfile){ echo $mailfile."<br>"; if(file_exists($mailfile)){ $fp = fopen($mailfile, "r"); if (!$fp){ die("open mailfile failed!"); }else{ while(($line = chop(fgets($fp,1024))) && $line !== ""){ echo htmlspecialchars($line)."<br>"; } } fclose($fp); }else{ echo "file not exists"; } }
2.根据文件名和ino号查找邮件文件
# $mid为ino function getmailfile($mid,$mailpath){ $newpath = $mailpath."/new/"; $curpath = $mailpath."/cur/"; $newhandle = opendir($newpath); while(($file = readdir($newhandle)) !== false ){ if ($file != "." && $file != ".." && stat($newpath.$file)['ino'] == $mid){ $mailfile = $newpath.$file; } } closedir($newhandle); $curhandle = opendir($curpath); while(($file = readdir($curhandle)) !== false ){ if ($file != "." && $file != ".." && stat($curpath.$file)['ino'] == $mid){ $mailfile = $curpath.$file; } } closedir($curhandle); return $mailfile; }
3.用parsemail函数
function parsemail($mailfile){ $mime = mailparse_msg_parse_file($mailfile); $struct = mailparse_msg_get_structure($mime); foreach ($struct as $x => $y) { $section = mailparse_msg_get_part($mime, $y); $info = mailparse_msg_get_part_data($section); if ($info["content-disposition"] == 'attachment'){ # 附件名编码过的要解码 $filename = Decode_mime($info["content-name"]); ob_start(); mailparse_msg_extract_part_file($section, $mailfile); $content = ob_get_contents(); ob_end_clean(); # 把附件写到临时目录 $fh = fopen("/home/temp/".$filename,"w+"); fwrite($fh, $content); fclose($fh); } } } function Decode_mime($Str){ if( substr_count($Str,'=?')==0 ) return $Str; list($Token,$Charset,$Encoding,$Str,$End) = preg_split('/\?/',$Str,5); $End = preg_replace("/^\=/","",$End); $Token = preg_replace("/\=/","",$Token); $Encoding = strtolower($Encoding); switch($Encoding){ case 'b': $Text = trim(base64_decode($Str)); break; case 'q': $Text = trim(quoted_printable_decode($Str)); } if( substr_count($End,'=?')!=0 ) $End = Decode_mime($End); return iconv($Charset,"utf-8//IGNORE",$Token.$Text.$End); }
相关文章推荐
- 读取eml格式文件,并解析
- php的curl,uploadfile上传文件,xml解析,邮件发送,动态时间,去重,等
- PHP通过eml邮件文件提取图片附件
- php mailparse 解析 .eml 文件
- php读取psd文件格式解析
- Linux下 Apache 不能解析php 和不能解析 mht shtml 文件格式问题汇总
- lumisoft会将eml后缀格式的附件给解析成文本,这里保存成文件
- PHP读取、解析eml文件及生成网页的方法示例
- 解析固定格式的文件数据 php脚本
- php解析doc格式word文件的另一种方法
- 解析Java的Class文件格式——解析魔数和版本号(一)
- MP3文件格式解析
- 解析Java的Class文件格式——解析魔数和版本号
- 对MIME格式的邮件文件进行解码获取其可读内容和附件等
- PHP导出MySQL数据库为EXCEL文件格式(.xls)的方法 http://www.kankanblog.com/read.php/144.htm
- PLY文件格式及其解析
- Java 的 Class 文件格式——解析魔数和版本号
- vc生成的各种文件格式解析
- php文件格式及其导出
- 发布两上PHP类(邮件发传及文件上传)