MIME Multipart Parser

时间:2013-08-16 17:21:07

标签: php mime multipart

我工作的公司为我们的客户提供批量邮寄功能[双重选择,而不是垃圾邮件,我保证]我们通过AOL的反馈循环获得了具体的报告,康卡斯特,雅虎等等。这些通常来自注册的人,不再需要它,已经习惯于点击'取消订阅'链接,[因为“这就是垃圾邮件发送者如何得到你”并简单地将所有邮件标记为垃圾邮件。

现在,这些FBL电子邮件遵循特定格式,其中邮件是多部分,有一个或两个文本部分,然后附加原始邮件,通常会删除所有收件人信息。此附加电子邮件也是多部分并包含取消订阅链接,但链接所在的附加电子邮件中的部分采用引用可打印编码,并且链接长于quoted-printable允许的行,所以它被淹没了。有时候这个部分似乎得到了base64编码,我认为如果客户端使用像中文/日文等的花哨语言就会发生这种情况。

我需要的是一个可以给我这些部分的mime / multipart数据解析器。 PHP 哦非常有用没有实现任何形式的多部分解析器,我可以在他们可怕的IMAP函数内部找到它们,或者在PHP本身内部处理多部分表单数据。

有没有人知道我可以使用的东西,因为我不得不自己编写?我找到了one script,但它依赖于旧的PECL功能,它依赖于PHP的自定义编译,而不是该服务器的选项。

TL; DR: PHP的imap_ *函数将解析从服务器收到的消息部分,但我需要解析电子邮件附加的部分到从服务器下载的电子邮件。

2 个答案:

答案 0 :(得分:0)

这家伙的剧本很丑陋,但它完成了工作:

http://www.phpclasses.org/package/3169-PHP-Decode-MIME-e-mail-messages.html

答案 1 :(得分:-1)

您可以使用https://github.com/breakermind/PhpMimeParser解析mime消息以及附件和内联图片,base64和quoted-printable。

$str = file_get_contents('mime-mixed-related-alternative.eml');

// MimeParser class 
$m = new PhpMimeParser($str);

// Emails
print_r($m->mTo);
print_r($m->mFrom);
print_r($m->mBcc);
print_r($m->mCc);

// Message
echo $m->mSubject;
echo $m->mHtml;
echo $m->mText;

// Files, images, inline images
print_r($m->mFiles);
print_r($m->mInlineList);