如何从 PHP 中的不同电子邮件来源获取 XML/TXT 附件?

How to get XML/TXT attachments from diverse email sources in PHP?

一旦获得 SMTP/MIME 文本,就很难说出来自各种随机 SMTP/MIME 程序的 parse/handle 电子邮件有多复杂。

对于这个问题的特定姿势,获得header信息是完全无关紧要的。只需要附件。

¿是否有任何防弹解决方案?

谢谢

您将需要一个 MIME 解析器来处理 MIME 数据。在PHP中,Mailparse extension can do this for you. It's a fairly basic library, so a wrapper like php-mime-mail-parser可以大大简化事情。在任何情况下,假设 Mailparse,过程的基本轮廓如下:load/parse 电子邮件,然后枚举满足以下条件的所有部分和子部分:

  • 零件的 Content-Disposition header 是 attachment
  • Content-Dispositon header 的解码 filename 参数以文字 .xml.txt 结尾。或者,您可以依靠 Content-Type header 进行类型检测(分别为 text/XMLtext/plain),但这不太可靠,因为它取决于电子邮件发件人找出附加文档的正确 MIME 类型。

一旦找到附件部分,就可以使用 PHP-provided BASE64 函数或 quoted-printable 解码从 MIME 表示形式对其进行解码。