1

FPDF で作成したファイルを SwiftMailer に添付しようとすると、いくつかの問題が発生します。基本的に、URL の ID 番号に基づいて動的に生成される createPDF.php というページがあります。このページは、$pdf->Output("filename.pdf",I); を使用して PDF をインラインで出力するように設定されています。私がやりたいことは、createPDF.php?id=xxx リンクを呼び出すだけで、別のページから SwiftMailer を使用してこのファイルを電子メールに添付できるようにすることです。

メールを送信したいPHPページから、添付ファイルを除いてすべてが機能します。何かが添付されていますが、必要なものではなく、ローカル マシンの PDF ビューアーで表示できません。ファイルの添付に固有の行は次のとおりです。

->attach(Swift_Attachment::fromPath('createPDF.php?id=xxxx'))

これは機能しませんが、確かに、FPDF でファイルを Web サーバーに保存しなくても可能であるに違いありません。

これは可能ですか?もしそうなら、どのように?

ありがとう!

4

2 に答える 2

0

わかりましたので、私はこれを理解しました。

基本的に、createPDF.php ファイルの大部分を関数として新しい PHP ファイルを作成し、2 つの変数を $id および $output 変数として関数に渡しました。$output は、単に FPDF がファイルを出力する方法 (インラインなど) です。次に、FPDF の出力を返すように関数を設定します。私の createPDF.php ファイルでは、変数として $id と 'I' を渡して関数を呼び出すだけで、ブラウザーに正しい PDF インラインが表示されます。

私の sendEmail 関数では、単純に $id と 'S' を渡し、それを変数 $content に設定します。これを添付ファイルとして SwiftMailer に渡します。

よく働く。

ご協力いただきありがとうございます!

于 2012-08-28T08:51:17.803 に答える
0

ここでの問題は、Swiftmailer がファイルの内容を取得し、php ファイルを実行しないことです。したがって、PDF のコンテンツは createPDF.php にあるコードになります。

最初にファイルを保護できないのはなぜですか?メールが送信されたら、安全に保管して削除できるはずです。

 <?php 
 $id = "xxx";
 $fileName = "tmp/".sha1(time()+mt_rand(0,99999999));
 include "createPDF.php"; //saves it to $fileName
 ->attach(Swift_Attachment::fromFile( $fileName )->setFilename('blaha.pdf'));
 unlink($fileName);
于 2012-08-28T03:24:34.063 に答える