2017-05-01 83 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');