我有一個.forward.postix,它將傳入的電子郵件管道傳遞給一個shell帳戶,並因此分配給一個解析電子郵件的PHP腳本 - 太棒了。到目前爲止,基於我在網上看到的所有內容,我正在使用explode('From: ', $email);
方法將所有內容拆分爲數據庫所需的變量。在php中解析電子郵件附件
輸入附件!使用相同的方法,我正在這樣做拉出一個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
以查看匹配結果?
附加說明:我建議您使用正則表達式來匹配您的頭部語句,而不是爆炸。 – h2ooooooo
您是否嘗試過使用PHP內建IMAP功能?我已經在過去成功實施了一個解決方案 –