【问题标题】:Send pdf output as stringAttachment using PHPMailer使用 PHPMailer 将 pdf 输出作为 stringAttachment 发送
【发布时间】:2022-01-04 13:42:02
【问题描述】:

我正在尝试使用 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...

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

【问题讨论】:

    标签: php phpmailer


    【解决方案1】:

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

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

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

    PHPMailer 会处理剩下的事情。

    【讨论】:

    • 谢谢兄弟。它奏效了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    相关资源
    最近更新 更多