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

干杯;-)

4

4 回答 4

28

行。您已经接受了答案,但对于其他来到这里的人,我认为有一种更简单的方法,但它也不是 PHP 的标准邮件功能,这真的行不通。如果你能得到梨包 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.";
}
于 2012-08-17T15:18:48.360 回答
2

这是我来这里时正在寻找的解决方案:

代替:

$dompdf->stream();

做这个:

$fileatt = $dompdf->output();

而不是使用PHPMailer发送邮件并将 pdf 附加到邮件中,如下所示:

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

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

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

于 2020-03-27T13:49:35.520 回答
0

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

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

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

于 2011-10-31T19:12:33.563 回答
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',
                ]);
}
于 2022-02-07T15:16:12.353 回答