使用 PHPMailer 将 pdf 输出作为 stringAttachment 发送

Send pdf output as stringAttachment using PHPMailer

我正在尝试使用 PHPMailer 的 addStringAttachment 方法附​​加文件。

我使用以下方法从 TCPDF 生成了 pdf:

$b64_enc_doc = $pdf->Output($file_name, 'E');

然后在发送电子邮件的脚本中,我有

...
$mail->addStringAttachment($b64_enc_doc, $file_name)

但是,当我尝试打开 PDF 附件时,它已损坏。

我尝试调试从 TCPDF 生成的 PDF 的输出,它看起来类似于:

Content-Type: application/pdf;
 name="file.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="file.pdf"

JVBERi0xLjcKJeLjz9MKMjEgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAxIDAgUiAvTGFz
dE1vZGlmaWVkIChEOjIwMjIwMTA0MTMwODQ2KzAwJzAwJykgL1Jlc291cmNlcyAyIDAgUiAvTWVk
aWFCb3ggWzAuMDAwMDAwIDAuMDAwMDAwIDU5NS4yNzYwMDAgODQxLjg5MDAwMF0gL0Nyb3BCb3gg
WzAuMDAwMDAwIDAuMDAwMDAwIDU5NS4yNzYwMDAgODQxLjg5MDAwMF0gL0JsZWVkQm94IFswLjAw
MDAwMCAwLjAwMDAwMCA1OTUuMjc2MDAwIDg0MS44OTAwMDBdIC9UcmltQm94IFswLjAwMDAwMCAw
LjAwMDAwMCA1OTUuMjc2MDAwIDg0MS44OTAwMDBdIC9BcnRCb3ggWzAuMDAwMDAwIDAuMDAwMDAw
IDU5NS4yNzYwMDAgODQxL...

请不要将文件保存到服务器,而是将文件直接发送到用户的电子邮件。请帮忙。 谢谢!

您没有显示您正在使用的代码,但该字符串是电子邮件的片段,而不是应有的 PDF 二进制 PDF 字符串。

你的代码应该是这样的(我不记得 tcpdf 的语法):

//Render the PDF to a string in memory
$pdf = $tcpdf->output('S');
$mail->addStringAttachment($pdf, 'file.pdf');

PHPMailer 会处理剩下的事情。