В настоящее время я пытаюсь создать 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
позаботьтесь о расположении файла.