2011-10-31 125 views
10

通过DOMPDF将PDF附加到电子邮件的最简单方法是什么?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

你看着用[Joomla的内置邮件对象(http://docs.joomla.org/How_to_send_email_from_components)? – BrianS

回答

0

PHP的邮件功能没有 “标准” 文件附件方法。这是SMTP系统的一个非常准系统的接口,它迫使你自己完成附加文件的所有工作。

我强烈建议使用PHPMailerSwiftmailer为您做电子邮件 - 它可以减少生成您自己的MIME电子邮件和插入附件(许多代码行)总共5行的繁重工作。

请注意,它们都不会处理来自DOMPDF的流式PDF。您必须将PDF保存到临时文件并附上该文件,

+0

感谢您的回答......那么我该怎么做? – user991830

23

好的。你已经接受了一个答案,但是对于任何来到这里的人来说,我认为有一个更简单的方法,但它也不是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."; 
} 
相关问题