如何在 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 标头是attachmentContent-Dispositon 标头的解码后的filename 参数以文字.xml.txt 结尾。或者,您可以依赖Content-Type 标头进行类型检测(分别为text/XMLtext/plain),但这不太可靠,因为它取决于电子邮件发件人为附加文档找出正确的MIME 类型.

找到附件部分后,可以使用 PHP 提供的用于 BASE64 或引用打印解码的函数从 MIME 表示中对其进行解码。

【讨论】:

Mailparse 可以外部安装吗?我有 WHM,我不想弄乱它,因为它不在内置的 WHM 选项中,只需将库放在一个文件夹中。 @mikl:我对 WHM 不熟悉,但据我所知,它附带了 PHP 扩展管理器。 /scripts/phpextensionmgrinstall 参数应该有助于安装扩展(同样,只是一个提示)。 操作,刚刚做到了。去了 Software/Module Installers/PHP Pecl,其余的都很直观。

以上是关于如何在 PHP 中从不同的电子邮件源获取 XML/TXT 附件?的主要内容,如果未能解决你的问题,请参考以下文章

获取 iframe 源?

如何在 php 中从 localhost 发送电子邮件?

如何在 AnyLogic 7 中从外部源获取资源容量?

防止在 ASP.Net Web 窗体中从外部源触发电子邮件

如何在 Flash AS3 中从 URL 获取/获取变量

如何在Mac上的PHP中从Xampp本地主机发送邮件?