gpt4 book ai didi

PHPMailer - 发送 PHP 生成的 PDF (mPDF) 作为附件

转载 作者:行者123 更新时间:2023-12-04 15:57:48 26 4
gpt4 key购买 nike

我知道如何使用 mPDF 库生成 PDF 并使用 PHPMailer 将其作为附件发送 - 如下所示:

...
$emailAttachment = $mpdf->Output('file.pdf', 'S');
$mail = new PHPMailer();
$mail->AddStringAttachment($emailAttachment, 'file.pdf', 'base64', 'application/pdf');
...

但是,如果我在单独的 PHP 文件(不应修改)中生成 PDF 怎么办 - 像这样 - invoice.php:
...
$mpdf = new mPDF();
$mpdf->WriteHTML($html);
$mpdf->Output();
exit;

如何使用 PHPMailer 附加这个动态创建的 PDF 文件?
我试过这个:
$mail = new PHPMailer();
...
$mail->addStringAttachment(file_get_contents('invoice.php'), 'invoice.pdf', 'base64', 'application/pdf');
$mail->send();

电子邮件以正确的内容发送,但 PDF 附件已损坏,因此无法显示。如何正确编码?我尝试了其他几种方法,但文件已损坏或根本没有附加(在一种情况下,整个电子邮件正文是空白的)。

提前谢谢你的帮助! :)

最佳答案

问题是您正在使用 file_get_contents错误地;当您使用它时,它将获取 include.php 的内容,而不是其执行的结果。您需要将其扩展为完整的 URL,以便以这种方式获取它,但我建议不要这样做。让脚本生成一个 PDF 文件,然后使用 the file output option of mpdf 加载它:

$mpdf = new mPDF();
$mpdf->WriteHTML($html);
$mpdf->Output('/path/to/files/doc.pdf', 'F');

然后运行该脚本并从 PHPMailer 附加生成的文件(然后删除该文件):
include 'invoice.php';
$mail = new PHPMailer();
...
$mail->addAttachment('/path/to/files/doc.pdf');
$mail->send();
unlink('/path/to/files/doc.pdf');

您可以通过使用 S 的“返回字符串”输出模式( Output )跳过外部文件方法。方法和 return ing 包含文件中的字符串:
$mpdf = new mPDF();
$mpdf->WriteHTML($html);
return $mpdf->Output('doc.pdf', 'S');

进而:
$pdf = include 'invoice.php';
$mail = new PHPMailer();
...
$mail->addStringAttachment($pdf, 'doc.pdf');
$mail->send();

关于PHPMailer - 发送 PHP 生成的 PDF (mPDF) 作为附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44407412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com