DOMPDF - прикрепить созданный PDF-файл к электронной почте


Какой самый простой способ прикрепить PDF-файл к электронной почте через DOMPDF?

Конец моего сценария, который я использую (его часть), приведен ниже:

$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.

Приветствия;-)

Author: user991830, 2011-10-31

2 answers

Почтовая функция PHP не имеет "стандартного" метода вложения файлов. Это чрезвычайно простой интерфейс для системы SMTP, который заставляет вас выполнять ВСЮ работу по прикреплению файла самостоятельно.

Я настоятельно рекомендую использовать PHPMailer или Swiftmailer для отправки электронной почты за вас - это уменьшает тяжелую работу по созданию вашего собственного MIME-письма и вставке вложения (много строк кода), возможно, всего до 5 строк.

Обратите внимание, что ни один из них не будет обрабатывайте потоковый PDF-файл из DOMPDF. Вам нужно будет сохранить PDF-файл во временный файл и прикрепить его,

 0
Author: Marc B, 2011-10-31 19:12:33

Хорошо. Вы уже приняли ответ, но для всех, кто придет сюда, я думаю, что есть более простой способ, но это также не стандартная почтовая функция PHP, которая действительно не будет работать. Если вы можете получить почту пакетов pear и 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.";
}
 23
Author: gearz, 2012-08-17 15:18:48