通过 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 上设置了发送邮件。每当我访问该页面时,我都会成功并且邮件发送成功,现在我的问题是附件部分,因为我收到的电子邮件有正文和主题,但没有附件 pdf。我在输出部分做错了吗? ( true 和 'S' 给出相同的东西)。谢谢。
PS: 我使用 yahoo 作为 smtp 发送电子邮件和 gmail 接收。
html2pdf 输出的 $pdf 是一个 blob(或二进制?),它没有保存在您的服务器中。 addAttachment() 方法的第一个参数需要一个非二进制路径。
您应该调用的方法是 addStringAttachment()。
$mail->addStringAttachment($pdf, 'file.pdf');
我正在使用 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 上设置了发送邮件。每当我访问该页面时,我都会成功并且邮件发送成功,现在我的问题是附件部分,因为我收到的电子邮件有正文和主题,但没有附件 pdf。我在输出部分做错了吗? ( true 和 'S' 给出相同的东西)。谢谢。 PS: 我使用 yahoo 作为 smtp 发送电子邮件和 gmail 接收。
html2pdf 输出的 $pdf 是一个 blob(或二进制?),它没有保存在您的服务器中。 addAttachment() 方法的第一个参数需要一个非二进制路径。 您应该调用的方法是 addStringAttachment()。
$mail->addStringAttachment($pdf, 'file.pdf');