使用 file_get_contents('php://input'); 在 PHP 中解析电子邮件。这些电子邮件均来自 Gmail,并且均包含一个 PDF 附件。解析将电子邮件附件转换为编码格式(可能是 base64)。我想将其转回 PDF 文件,但我什至不确定哪些数据是 PDF 的一部分,哪些只是 gmail 格式。
X-Attachment-Id: f_jwqkv3w50
JVBERi0xLjcNJeLjz9MNCjEwNDQgMCBvYaXplZCAxL0wgMTE1MTA5L08gMTA0
OS9FIDM2OTA3L04gNC9UIDExNIDMxMF0+Pg1lbmRvYmoNICAgICAgICAgICAg
... lots of data ...
YmQ8uJSBifG/8ykGzdwxMDAyMmmCyjgEACm0LAwplbmRzdHJlYW0KZW5kb2Jq
CnN0YXJ0eHJlZgoxMjYyMTMKJSVFT0YK
--00000000000044d68b058afa7da0--
--00000000000044d68b058afa7da0-- 是 PDF 的一部分还是页眉部分的页脚?如果可以转换这些数据,关于最好的方法有什么建议吗?
您必须解析原始电子邮件内容才能从文本中提取 PDF 片段。 解析部分取决于发送电子邮件的电子邮件客户端。 --00000000000044d68b058afa7da0-- - 这是边界字符串,它不是 PDF 的一部分。 然后清除PDF字符串您可以在base64解码后保存到文件。 对于 gmail pdf 附件,整个功能可以如下所示:
$start = 'Content-Type: application/pdf';
$pdfContent = mb_substr($messageRawContent, mb_strpos($messageRawContent, $start));
//remove header lines
$_pdfContent = mb_substr($pdfContent, strpos($pdfContent, "\n") + 1);
$__pdfContent = mb_substr($_pdfContent, strpos($_pdfContent, "\n") + 1);
$___pdfContent = mb_substr($__pdfContent, strpos($__pdfContent, "\n") + 1);
$____pdfContent = mb_substr($___pdfContent, strpos($___pdfContent, "\n") + 1);
$_____pdfContent = mb_substr($____pdfContent, strpos($____pdfContent, "\n") + 1);
//remove boudary string
$pdf = substr($_____pdfContent, 0, mb_strpos($_____pdfContent, "=="));
$pdfDecoded = base64_decode($pdf);
$pdfFilePath = 'path_to_file/file.pdf';
file_put_contents($pdfFilePath, $pdfDecoded);