【发布时间】:2012-11-19 02:16:38
【问题描述】:
我有一个 .forward.postix 将传入的电子邮件传送到一个 shell 帐户,然后传送到一个解析电子邮件的 PHP 脚本 - 太棒了。
到目前为止,根据我在网上看到的所有内容,我正在使用explode('From: ', $email); 方法将所有内容拆分为我的数据库所需的变量。
输入附件!使用相同的方法,我这样做是为了提取一个 jpg 附件 - 但似乎并非每个电子邮件客户端都以相同的方式格式化原始源,这引起了一些头痛!
$contentType1 = explode('Content-type: image/jpg;', $email); //start ContentType
$contentType2 = explode("--Boundary_", $contentType1[1]); //end ContentType
$jpg1 = explode("\n\n", $contentType2[0]); //double return starts base64 blob
$jpg2 = explode("\n\n", $jpg1[1]); //double return marks end of base64 blob
$image = base64_decode($jpg2[0]); //decode base64 blob into jpg raw
这是我的问题:
并非所有邮件客户端(例如 GMail)都将附件列为'Content-type: image/jpg'。 GMail 输入'Content-Type: IMAGE/JPEG',有时以'Content-Type: image/jpeg' 发送!哪个不符合我的爆炸...
我的问题:有人知道找到 base64 blob 边界的更好方法吗?或者可能是一种不区分大小写的方式来爆炸'Content-Type:',这样我就可以尝试针对image/jpg 或image-jpeg 来查看匹配的内容?
【问题讨论】:
-
附加说明:我建议您使用正则表达式来匹配您的标题语句而不是explode。
-
您是否尝试过使用 PHP 内置的 IMAP 功能?我过去已经成功地实施了一个解决方案
标签: php base64 explode email-attachments