我正在使用TCPDF库动态生成PDF(账单)并通过电子邮件发送。这一切都有效,但我有一个奇怪的问题。当我将电子邮件发送到Gmail帐户时,一切都很好,但当我将其发送到我的邮件服务器时,我收到带有pdf的电子邮件但是当我打开它时它没有打开,我收到一条消息“Adobe阅读器无法打开file.pdf因为它不是受支持的格式,或者因为文件已损坏。“ (电子邮件中的pdf为空白)。
我将PDF保存为如下字符串:
$attachment = $pdf->Output("mypdf.pdf","E");
$attachment = chunk_split($attachment);
并通过电子邮件发送,如下:
$header .= "--".$separator.$eol;
$header .= "Content-Type: application/pdf; name='mypdf.pdf'".$eol;
$header .= "Content-Transfer-Encoding: base64".$eol;
$header .= "Content-Disposition= attachment".$eol.$eol;
$header .= $attachment;
我正在发送带有php邮件功能的电子邮件。
有趣的是,如果我强制下载pdf,就像这样:
$ attachment = $ pdf->输出(“mypdf.pdf”,“D”);
文件正常,打开没有问题!但如果我把它改回“E”则不起作用。
另一个奇怪的是,有时我可以打开pdf(我在我的邮件服务器上)没有问题,但下次它不能工作(即使我发送完全相同的电子邮件)。
有人知道发生了什么吗?我想避免将pdf保存在本地服务器上。
答案 0 :(得分:0)
为什么要避免保存pdf文件?您可以使用"F"
参数保存它。邮件发送后,您可以使用unlink
功能
答案 1 :(得分:0)
我看到一些小缺陷:
Content-Disposition=
应为Content-Disposition:
"--".$separator."--"
我不确定,如果这可以解决您的问题。无论如何,我认为手动创建所有标题非常复杂。多年来,我使用PEARs Mail_Mime完成此任务,您将找到许多简单易用的解决方案。