объединить PDF и отправить по электронной почте php - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь объединить три файла PDF с PDFMerger и затем отправить объединенный файл PDF с PHPmailer без сохранения файла на сервере.

Это мой код:

<?php
require_once '../PHPMailer-master/src/PHPMailer.php';

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

use PDFMerger\PDFMerger;
require_once 'PDFMerger.php';

$email = new PHPMailer();
$pdf = new PDFMerger;

$pdf->addPDF('samplepdfs/one.pdf', 'all');
$pdf->addPDF('samplepdfs/two.pdf', 'all');
$pdf->addPDF('samplepdfs/three.pdf', 'all');

$pdf->merge('string'); // generate the file

$email->SetFrom('kasserer@lst-beboerforening.dk'); //Name is optional
$email->Subject   = 'Message Subject';
$email->Body      = 'text to send!';
$email->AddAddress( 'krestensb@gmail.com' );

$email->addAttachment($pdf);

return $email->Send();

?>

Я получаю эту ошибку:

[19-Jan-2020 17:11:55 UTC] PHP Warning:  preg_match() expects parameter 2 to be string, object given in /home/lstbeboer/public_html/PHPMailer-master/src/PHPMailer.php on line 1736
[19-Jan-2020 17:11:55 UTC] PHP Fatal error:  Uncaught Error: Class 'PHPMailer\PHPMailer\Exception' not found in /home/lstbeboer/public_html/PHPMailer-master/src/PHPMailer.php:2953
Stack trace:
#0 /home/lstbeboer/public_html/PDFMerger-master/sample.php(38): PHPMailer\PHPMailer\PHPMailer->addAttachment(Object(PDFMerger\PDFMerger))
#1 {main}
  thrown in /home/lstbeboer/public_html/PHPMailer-master/src/PHPMailer.php on line 2953

Любая помощь очень ценится!

BR Kresten

1 Ответ

0 голосов
/ 20 января 2020

Метод merge() в режиме string должен возвращать двоичный PDF в виде строки, поэтому вам нужно получить возвращаемое значение:

$pdfdata = $pdf->merge('string');

Поскольку эти данные находятся в переменной, а не в файл на диске, вы можете передать его прямо в PHPMailer через метод addStringAttachment() :

$email->addStringAttachment($pdfdata, 'document.pdf');

Достаточно указать имя файла, чтобы PHPMailer автоматически установил кодировку и тип MIME.

...