0

我有一个 .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/jpgimage-jpeg查看匹配的内容?

4

1 回答 1

1

您可以尝试使用preg_split(). 也许是这样的

$pattern = '#content-type: image/jpe?g#i';
$split_array = preg_split($pattern, $email);
于 2012-11-30T20:08:38.503 回答