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

2022-08-30 16:08:46

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

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

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

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

我看到PHP有一组以单词imap开头的函数,看起来它们可以做我想做的事情,但我不确定没有尝试它们。

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

有没有人有这方面的经验,可以给我指出正确的方向?我讨厌开始使用从长远来看最终无法满足我需求的东西。


答案 1

我最近开发了一个PHP邮件解析器,我一直在生产中使用它。
我对它非常满意,一些开发人员已经分叉了它:

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


答案 2

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

composer require zbateson/mail-mime-parser

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

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

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

查看网站以获取指南和API...如果您发现错误/拼写错误或看到改进,请随时提出问题,或直接挖掘并提供拉取请求:)


推荐