通过DOMPDF将PDF附加到电子邮件的最简单方法是什么?
我正在使用的脚本的末尾(部分内容)如下:
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
//below to save the pdf file - not needed if emailing pdf
file_put_contents('/home/ststrave/public_html/pdf/STS_Brochure.pdf', $dompdf->output());
//below to open pdf in browser - required
$dompdf->stream("STS_Brochure_".rand(10,1000).".pdf", array("Attachment" => false));
jexit();
只是为了澄清 - 这是在Joomla中使用的。
使用标准的PHP邮件功能欣赏最简单/最快捷的方式。
干杯; - )
答案 0 :(得分:25)
确定。你已经接受了答案,但是对于其他任何人来到这里,我认为有一种更简单的方法,但它也不是PHP的标准邮件功能,这实际上是行不通的。如果您可以获得邮件包邮件和Mail_mime,那么发送带附件的电子邮件非常容易。您也可以直接附加DomPDF输出而不创建文件,如下所示:
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->set_paper("letter", "portrait" );
$dompdf->render();
$output = $dompdf->output();
$mm = new Mail_mime("\n");
$mm->setTxtBody($body);
$mm->addAttachment($output,'application/pdf','output.pdf', false);
$body = $mm->get();
$headers = $mm->headers(array('From'=>$from,'Subject'=>$subject));
$mail =& Mail::factory('mail');
if($mail->send($to,$headers,$body)){
echo "Your message has been sent.";
}
答案 1 :(得分:0)
PHP的邮件功能没有“标准”文件附件方法。它是SMTP系统的极其准确的接口,迫使您自己完成附加文件的所有工作。
我强烈建议您使用PHPMailer或Swiftmailer为您执行此电子邮件 - 它可以减少生成您自己的MIME电子邮件和插入附件(许多行代码)所带来的繁重工作也许总共5行。
请注意,它们都不会处理来自DOMPDF的流式PDF。您必须将PDF保存到临时文件并附加,
答案 2 :(得分:0)
这是我来这里时要寻找的解决方案:
代替:
$dompdf->stream();
执行此操作:
$fileatt = $dompdf->output();
然后使用PHPMailer发送邮件并将pdf附加到邮件上,如下所示:
$filename = 'MyDocument.pdf';
$encoding = 'base64';
$type = 'application/pdf';
$mail->AddStringAttachment($fileatt,$filename,$encoding,$type);
通过这种方式,您不必处理将文件保存在服务器上的情况。