2015-08-26 4 views
3

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

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("[email protected]","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"); 
        } 

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

+0

Вот еще один ответ на вопрос, может быть, это поможет вам. http://stackoverflow.com/questions/4353271/email-pdf-attachment-with-php-using-fpdf – Garry

+0

, который останавливает ошибки, но PDF не отправляется по электронной почте – Anthony

ответ

5

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

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

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

, что альтернатива работала идеально, спасибо человеку! – Anthony

0

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

$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 

заботиться о местонахождении файла.

Смежные вопросы