如何在 php 中解析 .eml 文件?
Posted
技术标签:
【中文标题】如何在 php 中解析 .eml 文件?【英文标题】:How to parse a .eml file in php? 【发布时间】:2012-07-09 16:31:46 【问题描述】:如何在php中解析.eml文件?是否有任何 PHP 库或 PHP 扩展?
我想在浏览器中显示发件人、收件人、标题、附件和eml正文内容等邮件头信息。
【问题讨论】:
这不是问题,而是谷歌请求。 - 如果您正在寻找代码:pear.php.net/package/Mail_Mime 我同意 Hakre 的观点,请解释一下你到目前为止所做的尝试...... 【参考方案1】:有几种方法可以做到这一点。一种方法是自己动手,没那么复杂。
否则,您可能想看看 Mailparse 库:
http://php.net/manual/en/book.mailparse.php
还有这个:
http://code.google.com/p/php-mime-mail-parser/
【讨论】:
但是即使是 php.net 中的 php 扩展 mailparse 也不能很好地处理一些 eml 文件。当 eml 文件源像这样时,我无法获取主题、时间、发件人等 eml 标头信息—— ------------Return-Path:Return-Path: <test@mail.com.cn> Delivered-To: test@mail.com.cn X-WM-Delivered: test@mail.com.cn Delivered-To: receive@mail.com.cn X-WM-Delivered: all@mail.com.cn Received: from PC-201104191348 ([211.154.169.179]) (envelope-sender <test@mail.com.cn>) by 125.208.8.125 with ESMTP Date: Tue, 3 Jul 2012 12:28:16 +0800 From: "test" <test@mail.com.cn To: "all" <all@mail.com.cn Cc: "bb" <bb@mail.com.cn> Subject: =?gb2312?B?ufq80s2zvMa+1jIwMTLE6jfUws+1zbPJ/by2z+7Ev82o1qo=?= Message-ID: <201207031228157969470@mail.com.cn> X-mailer: Foxmail 6, 15, 201, 23 [cn] Mime-Version: 1.0
这里少了一个>:"To:"all"【参考方案2】:
This 是我用的:
composer require php-mime-mail-parser/php-mime-mail-parser
然后是 PHP:
$parser = new \PhpMimeMailParser\Parser();
$emailFile = 'myEmailFile.eml';
$parser->setText(file_get_contents($emailFile));
然后,获取地址:
$toAddressesQ = $parser->getAddresses('to');
或者身体:
$text = $parser->getMessageBody('text');
$html = $parser->getMessageBody('html');
或标题:
$subject = $parser->getHeader('subject');
或附件:
$attachments = $parser->getAttachments();
【讨论】:
以上是关于如何在 php 中解析 .eml 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何解析EML(邮件)格式的文件以及一款小巧的EML邮件阅读工具