DOMPDF - 将创建的PDF附加到电子邮件中

时间:2011-10-31 19:06:24

标签: php email pdf joomla dompdf

通过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邮件功能欣赏最简单/最快捷的方式。

干杯; - )

3 个答案:

答案 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系统的极其准确的接口,迫使您自己完成附加文件的所有工作。

我强烈建议您使用PHPMailerSwiftmailer为您执行此电子邮件 - 它可以减少生成您自己的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);

通过这种方式,您不必处理将文件保存在服务器上的情况。