2017-05-01 4 views
0

Ich benutze html2pdf, um eine HTML-Seite in ein PDF zu konvertieren, und ich möchte es als eine E-Mail senden. Mit dem unten stehenden Code konnte ich die PDF-Datei erstellen und auf der Seite korrekt anzeigen (mit Output ('name.pdf')). Ich fand, dass in einer E-Mail, um diese pdf als Anlage zu senden, ich brauche ein zweites Argument als wahr oder als ‚S‘, hinzuzufügen, so ist hier der Code:HTML2PDF-Ausgabe über PHPMailer() gesendet

$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; 
} 

Auch hinzuzufügen, habe ich das sendmail auf wamp. Immer wenn ich auf die Seite zugreife, bekomme ich Erfolg und die Mail wird erfolgreich gesendet, jetzt ist mein Problem der Attachment-Teil, weil ich die E-Mail mit Body und Subject bekomme, aber es gibt keinen Anhang zu PDF. Habe ich am Ausgabeteil etwas falsch gemacht? (sowohl wahr als auch "S" geben dasselbe). Vielen Dank. PS: Ich benutze Yahoo als SMTP, um E-Mails und Gmail zu senden.

Antwort

0

Die $ pdf-Ausgabe von html2pdf ist ein Blob (oder binär?), Es ist nicht auf Ihrem Server gespeichert. Der erste Parameter der Methode addAttachment() erwartet einen Pfad, der nicht binär ist. Die Methode, die Sie aufgerufen haben sollten, ist addStringAttachment().

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