如何从 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/XML
和 text/plain
),但这不太可靠,因为它取决于电子邮件发件人找出附加文档的正确 MIME 类型。
一旦找到附件部分,就可以使用 PHP-provided BASE64 函数或 quoted-printable 解码从 MIME 表示形式对其进行解码。
一旦获得 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/XML
和text/plain
),但这不太可靠,因为它取决于电子邮件发件人找出附加文档的正确 MIME 类型。
一旦找到附件部分,就可以使用 PHP-provided BASE64 函数或 quoted-printable 解码从 MIME 表示形式对其进行解码。