通过PHPMailer()发送的HTML2PDF输出

时间:2017-05-01 01:16:07

标签: php html2pdf

我使用html2pdf将html页面转换为pdf,我希望将其作为邮件发送。使用下面的代码,我能够创建pdf并在页面上正确显示(使用输出(' 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。我在输出部分做错了吗? (两者都是真的,并且' S'给出相同的东西)。谢谢。 PS:我使用yahoo作为smtp来发送电子邮件和gmail来接收。

1 个答案:

答案 0 :(得分:1)

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

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