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

12

最简单的方法是通过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 邮件函数。

干杯 ;-)


你看过使用Joomla内置的邮件对象吗? - BrianS
4个回答

29

好的,你已经接受了一个答案,但是对于其他人来说,我认为还有一种更简单的方法,但这也不是PHP标准邮件功能,真的不会起作用。如果你能获取pear包Mail和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.";
}

2

当我来到这里时,我正在寻找的解决方案如下:

不是:

$dompdf->stream();

请执行以下操作:

$fileatt = $dompdf->output();

然后使用PHPMailer发送邮件,并像这样附加pdf文件到邮件中:

        $filename = 'MyDocument.pdf';
        $encoding = 'base64';
        $type = 'application/pdf';

        $mail->AddStringAttachment($fileatt,$filename,$encoding,$type);

以此方法,您无需处理在服务器上保存文件的问题。

0

原始数据附件 attachData 方法可用于将原始字节字符串作为附件附加。例如,如果您在内存中生成了PDF并希望将其附加到电子邮件中而无需将其写入磁盘,则可以使用此方法。 attachData 方法将原始数据字节作为其第一个参数,文件名作为其第二个参数,并将选项数组作为其第三个参数:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->view('emails.orders.shipped')
                ->attachData($this->pdf, 'name.pdf', [
                    'mime' => 'application/pdf',
                ]);
}

0

PHP的邮件函数没有“标准”的文件附件方法。它是一个非常基本的界面到SMTP系统,强制您自己完成所有的文件附件工作。

我强烈建议使用PHPMailerSwiftmailer为您处理电子邮件 - 它可以减少生成自己的MIME电子邮件和插入附件的大量繁重工作(许多行代码),只需要大约5行代码就可以完成。

请注意,它们都不能处理来自DOMPDF的流式PDF。您需要将PDF保存到临时文件中并附加该文件,


谢谢你的回答...那我该怎么做呢? - user991830

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接