用 PHPMailer 发送 FPDF 文档;
Send FPDF document with PHPMailer;
我目前正在尝试使用 FPDF 生成 pdf,然后使用 PHPMailer 将其发送到电子邮件中。我知道 PHPMailer 功能正在运行,我可以创建 pdf。但是当我尝试先将pdf下载到服务器时,输出($pdf,"F"),我得到错误:
Warning (2): fopen(/temp-file.pdf): failed to open stream: Permission denied [APP/Vendor/fpdf/fpdf.php, line 1025]FPDF error: Unable to create output file: /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
注意文件位置。
我目前正在尝试使用 FPDF 生成 pdf,然后使用 PHPMailer 将其发送到电子邮件中。我知道 PHPMailer 功能正在运行,我可以创建 pdf。但是当我尝试先将pdf下载到服务器时,输出($pdf,"F"),我得到错误:
Warning (2): fopen(/temp-file.pdf): failed to open stream: Permission denied [APP/Vendor/fpdf/fpdf.php, line 1025]FPDF error: Unable to create output file: /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
注意文件位置。