MPDF 电子邮件附件发送空白 PDF


MPDF E-mail Attachment Sends Blank PDF

我已经使用 mpdf 成功生成了一个 PDF,我已经通过下载 PDF 进行了验证。但是,当我将 PDF 作为电子邮件附件发送时,我收到一个空白 PDF,其中包含 Adobe Reader 的"内存不足"错误。下面是我的代码:

<?php
include("MPDF57/mpdf.php");
ob_start();
include "Receipt_Template_2.php"; 
$template = ob_get_contents();
ob_end_clean();
$mpdf=new mPDF('','A4','','',32,25,27,25,16,13,'L'); 
mpdf->WriteHTML($template);
$content = $mpdf->Output($template, 'S');
$content = chunk_split(base64_encode($content));
$mailto = 'sample@sample.com';
$from_name = 'KIREA';
$from_mail = 'NoReply@kirea.ca';
$uid = md5(uniqid(time()));
$subject = 'KIREA Donation Receipt';
$message = "Thank you for your donation!'n'nAttached is the receipt concerning the     donation. If you have any questions, please e-mail us at receipts@kirea.ca";;
$filename = $pdfName;
$header = "From: ".$from_name." <".$from_mail.">'n";
$header .= "MIME-Version: 1.0'n";
$header .= "Content-Type: multipart/mixed; boundary='"".$uid."'"'n";
$header .= "This is a multi-part message in MIME format.'n";
$header .= "--".$uid."'r'n";
$header .= "Content-type:text/plain; charset=iso-8859-1'n";
$header .= "Content-Transfer-Encoding: 7bit'n";
$header .= $message."'n'r'n";
$header .= "--".$uid."'n";
$header .= "Content-Type: application/pdf; name='"".$filename."'"'n";
$header .= "Content-Transfer-Encoding: base64'n";
$header .= "Content-Disposition: attachment; filename='"".$filename."'"'n'n";
$header .= $content."'n'n";
$header .= "--".$uid."--";
$is_sent = @mail($mailto, $subject, "", $header);
$mpdf->Output();
exit;
?>

关于为什么PDF在作为电子邮件附件发送后最终变为空白,是否有任何想法?谢谢。

mpdf->WriteHTML($template);
$content = $mpdf->Output($template, 'S');

错了,你在这里没有拿走写入数据的对象

请将以下代码替换为上述代码以获得正确的结果。

$pdfdata=mpdf->WriteHTML($template);
$content = $mpdf->Output('' , 'S');

在电子邮件中使用$content

如果你可以使用swiftmailer,你可以将MPDF生成的PDF附加到电子邮件中,非常简单,如下所示:

<?php
require_once $swift_mailer_path.'swift_required.php';
$transporter = Swift_SmtpTransport::newInstance($smtp_host, $smtp_port, $smtp_protocol)
  ->setUsername($smtp_username')
  ->setPassword($smtp_password');
$mailer = Swift_Mailer::newInstance($transporter);
$message = Swift_Message::newInstance('Email Subject')
  ->setFrom(array($from_email => $from_name))
  ->setTo($to_email)
  ->setBody($email_body);
$attachment = Swift_Attachment::newInstance($mpdf->Output($pdf_path, "S"), $pdf_file_name, 'application/pdf');
$message->attach($attachment);  
$message->setContentType("text/html");
$result = $mailer->send($message);
?>

这是参考。