2012-01-17 22 views
1

私はTCPDFライブラリを使用してその場でPDF(請求書)を生成し、電子メールで送信しています。それはすべて動作しますが、私は奇妙な問題があります。私はGmailのアカウントに電子メールを送信する際には問題ありませんが、私は私のメールサーバーに送信するとpdfで電子メールを受信しますが、開かないとメッセージが表示されます。 file.pdfはサポートされていない形式か、ファイルが破損しているためです。 (電子メールのpdfは空白です)。TCPDFを使用してオンザフライでPDFを生成

私はそうのような文字列にPDFを保存します。

$attachment = $pdf->Output("mypdf.pdf","E"); 
$attachment = chunk_split($attachment); 

などのような電子メールを介してそれを送信します。

$header .= "--".$separator.$eol; 
$header .= "Content-Type: application/pdf; name='mypdf.pdf'".$eol; 
$header .= "Content-Transfer-Encoding: base64".$eol; 
$header .= "Content-Disposition= attachment".$eol.$eol; 
$header .= $attachment; 

iはPHPのメール機能と電子メールを送信しています。

私はそうのように、PDFファイルのダウンロードを強制あれば面白いものがある:

$添付ファイル= $ PDF->出力( "mypdf.pdf"、 "D");

ファイルは問題なく開きます。しかし、私はそれを "E"に戻すとうまくいかない。

もう1つの奇妙なことは、問題なく、pdf(私はメールサーバーに乗っている)を開くことができるということですが、次回は仕事ができなくても(まったく同じメールを送信しても)

何が起こっているか考えている人はいますか?私は、ローカルサーバー上でPDFを保存しないようにしたいと思います。

+0

あなたは '$ attachement'をエンコードしましたか? – DerVO

+0

$ pdf->出力( "mypdf.pdf"、 "E"); base64でエンコードされた文字列を返します。私は自分自身でエンコードしようとしましたが、うまくいきませんでした。 – blejzz

答えて

0

なぜPDFファイルを保存しないのですか? "F"パラメータで保存できます。私は

  • Content-Disposition=Content-Disposition:
  • する必要がありますあなたは"--".$separator."--"

を使用して添付ファイルを終了する必要があります。メールはあなたがunlink機能

+0

ファイルが消去される場合、ファイルを書き込む点は表示されません。私は最後の手段としてこのオプションを使用しています。 – blejzz

+0

私はあなたと同じことを前にしています。私はif($ mail-> send()== true){unlink( "file path");をチェックしました。 } できます。 –

+0

私はそれが動作するが、私はファイルを作成しないようにしたいと思います。 – blejzz

0

でそれを削除することができます送信した後、私はいくつかのマイナーな欠陥が見これがあなたの問題を解決するかどうかはわかりません。とにかく、すべてのヘッダーを手動で作成するのはかなり複雑だと思います。私はこの仕事のためにPEARs Mail_Mimeを何年も使っています。あなたは、使いやすいシンプルなソリューションをたくさん見つけるでしょう。