12

DOMPDF 経由で PDF を電子メールに添付する最も簡単な方法は何ですか?

私が使用しているスクリプトの最後 (一部) は以下のとおりです。

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();    
//below to save the pdf file - not needed if emailing pdf
file_put_contents('/home/ststrave/public_html/pdf/STS_Brochure.pdf', $dompdf->output());
//below to open pdf in browser - required
$dompdf->stream("STS_Brochure_".rand(10,1000).".pdf", array("Attachment" => false));
jexit();

明確にするために-これはJoomlaで使用されています。

標準の PHP メール機能を使用した最も簡単で迅速な方法を評価します。

乾杯 ;-)

4

4 に答える 4

28

Ok。あなたはすでに回答を受け入れていますが、ここに来る他の人にとってはもっと簡単な方法があると思いますが、それはPHPの標準メール機能でもなく、実際には機能しません. pear パッケージの Mail と Mail_mime を入手できれば、添付ファイル付きの電子メールを送信するのは非常に簡単です。次のように、ファイルを作成せずに DomPDF 出力を直接添付することもできます。

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->set_paper("letter", "portrait" );
$dompdf->render();

$output = $dompdf->output();

$mm = new Mail_mime("\n");

$mm->setTxtBody($body);
$mm->addAttachment($output,'application/pdf','output.pdf', false);

$body = $mm->get();
$headers = $mm->headers(array('From'=>$from,'Subject'=>$subject));

$mail =& Mail::factory('mail');
if($mail->send($to,$headers,$body)){
    echo "Your message has been sent.";
}
于 2012-08-17T15:18:48.360 に答える
0

PHP のメール機能には、「標準的な」ファイル添付方法がありません。これは、ファイルを添付するすべての作業を自分で行うことを強制する、SMTP システムへの非常に最低限のインターフェイスです。

PHPMailerまたはSwiftmailerを使用してメールを送信することを強くお勧めします。これにより、独自の MIME メールを生成し、添付ファイル (多数のコード行) を挿入するという面倒な作業が、おそらく合計 5 行に軽減されます。

どちらも DOMPDF からストリーミングされた PDF を処理しないことに注意してください。PDFを一時ファイルに保存して添付する必要があります。

于 2011-10-31T19:12:33.563 に答える
0

生データの添付ファイル attachData メソッドを使用して、未加工のバイト文字列を添付ファイルとして添付できます。たとえば、メモリ内に生成した PDF をディスクに書き込まずに電子メールに添付する場合、この方法を使用できます。attachData メソッドは、生データ バイトを最初の引数として、ファイルの名前を 2 番目の引数として、オプションの配列を 3 番目の引数として受け入れます。

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->view('emails.orders.shipped')
                ->attachData($this->pdf, 'name.pdf', [
                    'mime' => 'application/pdf',
                ]);
}
于 2022-02-07T15:16:12.353 に答える