2011-11-09 10 views
7

ではSwiftMailerの添付ファイルとしてTCPDFによって生成されたPDFを送信する方法、(私にとって)最も近い次のようになります。私はすでにいくつかのソリューションを試みた

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

$pdfTCPDF$messageのインスタンスであることSwift_Messageのインスタンスであります。 上記のメールを送信中です。ファイルが添付されていますが、開こうとするとファイルが壊れているか、ひどくエンコードされているというエラーメッセージが表示されます。

私の質問は、サーバーにファイルを保存せずにメールを送信した後で、Swiftmailerの添付ファイルとしてTCPDFによって生成されたpdfを送信する方法です。 HereはTCPDF出力メソッドのドキュメントへのリンクです。誰かが私が見逃したことがあるかもしれません。

答えて

0

これを試しましたか?

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

これは別のメールバックエンドPHPで行っていますが、これは機能します。私はメールのバックエンドが添付ファイルのエンコーディングを担当しているので、手動でbase64としてエンコードする必要はありません。

+0

もう一度試してみましたが、まだ動作しません(同じエラーメッセージ) – matino

+0

ファイルをファイルシステムに保存すると開くことができますか?はいの場合、それは即時郵便者の不具合です。それからあなたは少なくともどこをもっと見るかを知っています。 – Markus

+0

ファイルを保存して$ message-> attach(Swift_Attachment :: fromPath($ path));で添付してください。その後、すべてがOKです – matino

4

私は、オンザフライでTCPDFを付けても問題はありませんでした。

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

$val['file']が返された値からは、次のとおりです。

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

は、私が使用してファイルを添付:

は私が最終的に出力タイプ 'S' を使用してPDFを返す関数を呼び出します上記。 5.9.134とSwift Mailerのバージョン:

私はTCPDFのバージョンを使用しています私はこのようなものを使用しています4.1.3

+0

それは私がそれをやろうとした方法ですが、電子メールにpdfを書き留めた後、ファイルが壊れているか、ひどくエンコードされているというエラーメッセージが表示されます... – matino

8

、それが働いています。 PDFコンテンツについては、私はPDFライブラリで最も単純な例の1つを使用しています。

[...] 
$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); 
[...] 

私はではSwiftMailer v4_3_0とTCPDFのv6_0_002を使用していますので、たぶん、この答えは少し遅れています。しかし、ちょうど誰かに価値がある場合。

+0

これは助けてくれました。 – afinom

+0

これはMPDFでも有効です。どうもありがとう。ここに参考文献があります:http://stackoverflow.com/a/34785821/386579 –

関連する問題