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.
Приветствия;-)
2 answers
Почтовая функция PHP не имеет "стандартного" метода вложения файлов. Это чрезвычайно простой интерфейс для системы SMTP, который заставляет вас выполнять ВСЮ работу по прикреплению файла самостоятельно.
Я настоятельно рекомендую использовать PHPMailer или Swiftmailer для отправки электронной почты за вас - это уменьшает тяжелую работу по созданию вашего собственного MIME-письма и вставке вложения (много строк кода), возможно, всего до 5 строк.
Обратите внимание, что ни один из них не будет обрабатывайте потоковый PDF-файл из DOMPDF. Вам нужно будет сохранить PDF-файл во временный файл и прикрепить его,
Хорошо. Вы уже приняли ответ, но для всех, кто придет сюда, я думаю, что есть более простой способ, но это также не стандартная почтовая функция 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.";
}