2017-05-01 47 views
0

我正在使用html2pdf将html页面转换为pdf,我想将它作为邮件发送。使用下面的代码,我可以创建PDF并在页面上正确显示它(使用Output('name.pdf'))。我发现,为了发送该PDF作为附件的邮件,我需要添加第二个参数为真或为“S”,所以这里是代码:通过PHPMailer发送的HTML2PDF输出()

$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('[email protected]', 'sender'); 
$mail->addAddress('[email protected]', 'test'); 
$mail->Subject = 'TestMail'; 
$mail->addAttachment($pdf, 'file.pdf'); 
$mail->Body = 'TestMessage'; 

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

此外,添加,我设置wam上的sendmail。每当我访问该页面,我就会获得成功,并且邮件发送成功,现在我的问题是附件部分,因为我正在收到包含正文和主题的电子邮件,但没有附件pdf。我在输出部分做错了什么? (真和'S'都是一样的)。谢谢。 PS:我使用雅虎作为smtp发送电子邮件和Gmail接收。

回答

0

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

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