Отправить документ FPDF с помощью PHPMailer;

В настоящее время я пытаюсь создать PDF-файл с FPDF, а затем отправить его по электронной почте с помощью PHPMailer. Я знаю, что функциональность PHPMailer работает, и я могу создать pdf. Но когда я сначала пытаюсь загрузить pdf на сервер, вывод ($ pdf, «F»), я получаю ошибку:

Предупреждение (2): fopen (/temp-file.pdf): не удалось открыть поток: разрешение отклонено [APP / Vendor / fpdf / fpdf.php, строка 1025] Ошибка FPDF: невозможно создать выходной файл: / temp-file. PDF

Создание pdf очень длинное, поэтому я просто покажу вам, как вы пытаетесь его загрузить.

FPDF

$pdfoutputfile = 'temp-folder/temp-file.pdf'; $pdfdoc = $pdf->Output($pdfoutputfile, 'F'); 

PHPMailer

 $mail = new phpmailer; $mail->SetFrom("info@company.com","Company"); $mail->AddAddress($to); $mail->Subject = "Invoice $id"; $body .= "This is an automatically generated message from Company \n"; $mail->Body = $body; $mail->AddAttachment($pdfoutputfile, 'my-doc.pdf'); if(!$mail->Send()) { $this->Session->setFlash("Invoice was not sent"); echo 'Mailer error: ' . $mail->ErrorInfo; } else { $this->Session->setFlash("Invoice was sent"); } 

У кого-нибудь есть решение для меня? Спасибо!

Вам просто нужно исправить свои права. Если FPDF не может записать файл, то для PHPMailer нет ничего, поэтому, конечно, это не сработает.

В качестве альтернативы вы можете отобразить строку и приложить ее вместо этого – таким образом, не нужно писать файл:

 $pdfdoc = $pdf->Output('', 'S'); ... $mail->addStringAttachment($pdfdoc, 'my-doc.pdf'); 

Если вам нужно сохранить файл и отправить его, используйте это.

  $file = basename("test"); //create file $file .= '.pdf'; //change extension of file to .pdf $pdf->Output($file, 'F'); //save file ..... $mail->AddAttachment("test.pdf"); //add attachment 

позаботьтесь о расположении файла.