在PHP中处理电子邮件解析/解码的最佳方法?

Sgr*_*ite 25 php email mime decode

目前我正在使用PEAR库的mimeDecode.php来解析传入的电子邮件.它似乎有很多问题,无法解码很多消息,所以我想用更好的东西替换它.

我正在寻找能够正确分离消息部分的东西,例如to,from,body等.理想情况下,它可以处理所有常见的编码方法,如base64,uuencode,quoted printable等.

在同一消息的纯文本和html版本都包含在一封电子邮件中的情况下,我最好知道它们之间的区别,以便我可以选择我希望显示的部分.

我现在并不担心附件,但如果我想在将来实现它,那么了解它们会很好.

我看到PHP有一组以imap开头的函数,看起来它们可能会按照我的意愿行事,但我不确定如何不试用它们.

目前我正在对PHP中的消息进行动态解码,这就是我正在寻找PHP替代解决方案的原因.

有没有人有这方面的经验可以指出我正确的方向?我不想开始使用从长远来看不会做我需要的东西.

dan*_*dan 12

我最近开发了一个PHP邮件解析器,我一直在生产中使用它.
我很高兴它和一些开发人员分享它:

https://github.com/plancake/official-library-php-email-parser

  • 伟大的图书馆老兄! (2认同)

Zaa*_*hid 7

我知道这个问题现在已经有四年了......但我最终需要一个邮件解析库,对任何可用的选项都不满意.我想要一些可靠,符合PSR-2的东西,可以通过作曲家安装.

composer require zbateson/mail-mime-parser
Run Code Online (Sandbox Code Playgroud)

它是它自己的解析器,从头开始构建以解决其他实现中的已知问题和错误.它经过了广泛的测试并得到了广泛的应用.

该库使用Psr7流,允许您传递任何类型的流.它也不会将所有信息存储在内存中 - 如果需要,非常大的附件可以作为流而不是字符串返回,因此内存不会用完.类似地,整个消息永远不会直接存储在内存中,只会引用流,并且标头会保留在内存中.

https://github.com/zbateson/mail-mime-parser

查看网站上的指南和API ...如果您发现错误/拼写错误或看到改进,请随时打开一个问题,或直接挖掘并提出拉动请求:)

  • 效果很好!我从 S3 上的 AWS SES 收件箱流式传输 40+MB 的电子邮件,零问题。优秀的图书馆。 (2认同)

pro*_*son 6

有趣的你应该问......我现在正在研究一个简单的通知系统.我刚刚完成了Bounce Manager,我使用Zend_Mail来实现.它拥有几乎所有你要找的功能...您可以连接到邮箱(POP3,IMAP,的Mbox,和Maildir),并撤出它的消息,以及操作上的所有这些消息.

它处理多部分消息,但部件可能难以使用.我很难弄清楚哪个部分是我正在使用的NDR中附加的原始消息部分,但我有一种感觉我只是遗漏了文档中的内容.我不确定它如何处理编码,因为我的使用相当简单,但我很确定它有你提到的所有编码的规定.查看文档并浏览API.

  • 是的,我确定有一种方法,因为同一个类也用于使用邮件程序/传输类发送消息,在这种情况下,您将始终构建一个消息形式字符串/文件.如果我记得它看起来像`$ m = new Zend_Mail_Message(array('raw'=> $ stringMessage));`看看实际的类和构造函数验证的doc注释. (2认同)