如何在 PHP 中从不同的电子邮件源获取 XML/TXT 附件?
Posted
技术标签:
【中文标题】如何在 PHP 中从不同的电子邮件源获取 XML/TXT 附件?【英文标题】:How to get XML/TXT attachments from diverse email sources in PHP? 【发布时间】:2015-07-19 19:26:47 【问题描述】:一旦获得 SMTP/MIME 文本,很难说解析/处理来自各种随机 SMTP/MIME 程序的电子邮件会有多复杂。
对于这个问题的特定姿势,获取标题信息完全无关紧要。只需要附件。
¿有什么防弹解决方案可以解决这个问题吗?
谢谢
【问题讨论】:
【参考方案1】:您需要一个 MIME 解析器来处理 MIME 数据。在 php 中,Mailparse 扩展可以为您做到这一点。这是一个相当基本的库,所以像php-mime-mail-parser 这样的包装器可以大大简化事情。无论如何,假设Mailparse,该过程的基本轮廓如下:加载/解析电子邮件,然后枚举满足以下条件的所有部分和子部分:
部件的Content-Disposition
标头是attachment
。
Content-Dispositon
标头的解码后的filename
参数以文字.xml
或.txt
结尾。或者,您可以依赖Content-Type
标头进行类型检测(分别为text/XML
和text/plain
),但这不太可靠,因为它取决于电子邮件发件人为附加文档找出正确的MIME 类型.
找到附件部分后,可以使用 PHP 提供的用于 BASE64 或引用打印解码的函数从 MIME 表示中对其进行解码。
【讨论】:
Mailparse 可以外部安装吗?我有 WHM,我不想弄乱它,因为它不在内置的 WHM 选项中,只需将库放在一个文件夹中。 @mikl:我对 WHM 不熟悉,但据我所知,它附带了 PHP 扩展管理器。/scripts/phpextensionmgr
和 install
参数应该有助于安装扩展(同样,只是一个提示)。
操作,刚刚做到了。去了 Software/Module Installers/PHP Pecl,其余的都很直观。以上是关于如何在 PHP 中从不同的电子邮件源获取 XML/TXT 附件?的主要内容,如果未能解决你的问题,请参考以下文章