繁体   English   中英

通过PHPMailer()发送的HTML2PDF输出

[英]HTML2PDF output sent through PHPMailer()

我正在使用html2pdf将html页面转换为pdf,我想将其作为邮件发送。 使用下面的代码,我能够创建pdf并将其正确显示在页面上(使用Output('name.pdf'))。 我发现为了将此pdf作为附件发送到邮件中,我需要添加第二个参数为true或'S',因此代码如下:

$pdf = '';

try
{
    // init HTML2PDF
    $html2pdf = new HTML2PDF('P', 'A4', 'en', true, 'UTF-8', array(0, 0, 0, 0));

    // display the full page
    $html2pdf->pdf->SetDisplayMode('fullpage');

    // get the HTML
    ob_start();
    include('invoice_html.php');
    $content = ob_get_clean();

    // convert
    $html2pdf->writeHTML($content);

    // send the PDF
    $pdf = $html2pdf->Output('', true);

}
catch(HTML2PDF_exception $e) {
    echo $e;
    exit;
}

$mail = new PHPMailer();
$mail->setFrom('senderSMTP@yahoo.com', 'sender');
$mail->addAddress('test@gmail.com', 'test');
$mail->Subject = 'TestMail';
$mail->addAttachment($pdf, 'file.pdf');
$mail->Body = 'TestMessage';

if($mail->send())
{
    echo 'success';
}
else
{
    echo $mail->ErrorInfo;
}

另外,要添加,我在wamp上设置了sendmail。 每当我访问该页面时,我都成功了,并且邮件发送成功了,现在我的问题是附件部分,因为我收到的邮件带有正文和主题,但是没有附件pdf。 我在输出部分做错了吗? (true和'S'表示相同的意思)。 谢谢。 PS:我使用Yahoo作为smtp发送电子邮件和gmail进行接收。

html2pdf的$ pdf输出是一个Blob(或二进制?),它没有保存在您的服务器中。 addAttachment()方法的第一个参数期望路径不是二进制的。 您应该调用的方法是addStringAttachment()。

$mail->addStringAttachment($pdf, 'file.pdf');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM