2011-11-09 22 views
7

Tôi đã thử một số giải pháp, gần nhất (đối với tôi) nên trông như thế này:Làm thế nào để gửi pdf được tạo ra bởi TCPDF như Swiftmailer tập tin đính kèm

$file = $pdf->Output('', 'E'); 
$message->attach(Swift_Attachment::newInstance($file, 'name.pdf', 'application/pdf')); 

$pdf là một thể hiện của TCPDF$message là một thể hiện của Swift_Message . Sử dụng ở trên email đang được gửi ok, tệp được đính kèm nhưng khi tôi cố mở nó, tôi nhận được thông báo lỗi rằng tệp bị hỏng hoặc bị mã hóa sai.

Câu hỏi của tôi là: cách gửi pdf được tạo bởi TCPDF dưới dạng tệp đính kèm Swiftmailer mà không lưu tệp vào máy chủ và xóa tệp sau khi gửi email. Here là liên kết đến tài liệu phương thức đầu ra TCPDF, có thể ai đó có thể thấy thứ tôi đã bỏ qua.

Trả lời

0

Bạn đã thử cái này chưa?

$file = $pdf->Output('', 'S'); 

Tôi đang làm điều này với một chương trình phụ trợ thư khác trong PHP và cách này không hoạt động. Tôi đoán phần phụ trợ thư sẽ xử lý việc mã hóa tệp đính kèm, vì vậy không cần phải mã hóa nó dưới dạng base64 theo cách thủ công.

+0

Đã thử điều này rồi, đã thử lại và vẫn không hoạt động (cùng thông báo lỗi) – matino

+0

Nếu bạn lưu tệp vào hệ thống tệp, bạn có thể mở tệp không? Nếu có, thì đó là một lỗi swiftmailer. Sau đó, bạn ít nhất biết nơi để tìm thêm. – Markus

+0

Nếu tôi lưu tệp và đính kèm tệp đó với $ message-> attach (Swift_Attachment :: fromPath ($ path)); sau đó mọi thứ đều ok – matino

4

Tôi không gặp vấn đề gì khi đính kèm TCPDF.

tôi gọi một chức năng mà cuối cùng trả về PDF bằng cách sử dụng loại Output 'S':

return $pdf->Output('TE_Invoice.pdf', 'S');

tôi đính kèm tập tin sử dụng:

$message->attach(Swift_Attachment::newInstance() 
    ->setFilename('TE_Invoice.pdf') 
    ->setContentType('application/pdf') 
    ->setBody($val['file'])); 

đâu $val['file'] là giá trị trả về từ ở trên.

Tôi đang sử dụng TCPDF Phiên bản: 5.9.134 và Swift Mailer Phiên bản: 4.1.3

+0

Đó là cách tôi đã cố gắng để làm điều đó nhưng sau khi tôi mở pdf trong email tôi nhận được thông báo lỗi rằng tập tin bị hỏng hoặc bị mã hóa kém ... – matino

8

Tôi đang sử dụng một cái gì đó như thế này và nó đang hoạt động. Đối với nội dung PDF, tôi đang sử dụng một trong những ví dụ đơn giản nhất trên thư viện PDF.

[...] 
$pdf_as_string = $pdf->Output('', 'S'); // $pdf is a TCPDF instance 
[...] 
$transport = Swift_MailTransport::newInstance(); // using php mail function 
$message->setTo(array(
    "[email protected]" => "Main Email", 
    "[email protected]" => "Secondary Email" 
)); 
$message->setSubject("This email is sent using Swift Mailer"); 
$message->setBody("You're our best client ever."); 
$message->setFrom("[email protected]", "Developers United"); 
$attachment = Swift_Attachment::newInstance($pdf_as_string, 'my-file.pdf', 'application/pdf'); 
$message->attach($attachment); 
[...] 

Có thể câu trả lời này đến trễ một chút vì tôi đang sử dụng swiftmailer v4_3_0 và TCPDF v6_0_002. Nhưng chỉ trong trường hợp là có giá trị cho một ai đó.

+0

điều này đã giúp, cảm ơn. – afinom

+0

Điều này cũng làm việc cho MPDF. Cảm ơn rất nhiều. Đây là một tham chiếu: http://stackoverflow.com/a/34785821/386579 –

Các vấn đề liên quan