0

CakePHP 2、CakeEmail、CakePDFプラグインを使用しています

ビューに基づいてPDFを生成し、それを電子メールに添付しようとしています。私はreadmeファイルを読みましたが、それでも賢明ではありません。サーバー上に実際にファイルを作成する必要がありますか?

これはこれまでの私のコードです(電子メールは送信されますが、PDFは送信されません)。

// Build PDF as attachment
        $CakePdf = new CakePdf();
        $CakePdf->template('email_view', 'default');
        //get the pdf string returned
        $pdf = $CakePdf->output();

        // SMTP Options
        $this->Email->smtpOptions = array(

            // Only to be used internally
            'port'=>'25',
            'timeout'=>'30',
            'host' => '111.111.111.111',
            'username'=>'',
            'password'=>''
         );
        $this->Email->template = 'newExpenseClaim';
        $this->Email->from    = 'Expense Tracker <james@test.com>';
        $this->Email->to      = 'james@test.com'; 
        $this->Email->subject = 'New Expense Claim Submitted - Please Review';
        $this->Email->sendAs = 'both';
        $this->Email->delivery = 'smtp';

        $this->Email->attachments = $pdf;

        // Set username & url in email
        $this->set('user', $fu['User']['name']);
        $this->set('ms', $ms);
        $this->Email->send();
        $this->set('smtp_errors', $this->Email->smtpError);

これがgithubからの私を読んでください:

https://github.com/ceeram/CakePdf

どんな助けでもありがたいです!

4

2 に答える 2

0

TCPDFを使用しています。これが私のやり方です。それをあなたのコードに適応させてください:

$pdf->Content($cvData);
$content = $pdf->Output($cvFileName, 'S');
file_put_contents(TMP . $cvFileName, $content);
$this->Email->attachments = array($cvFileName=>TMP . $cvFileName);
于 2012-09-05T17:53:59.997 に答える
0

私は最終的にこれを機能させました、これが私がしたことです:

// Build PDF
$CakePdf = new CakePdf();

// Add disbursements onto array
$merged = array_merge($expenseClaim, $expenseTotal, $approvedBy, $disbursements);

$CakePdf->viewVars($merged);
$CakePdf->template('email_view', 'default');
$filename = 'expense-claim-' .$id. '.pdf';
$CakePdf->write(APP . 'files' . DS . $filename);

基本的に、PDFビューに渡すために必要なすべてのデータを1つの配列にマージしてから、viewVars()を使用して渡しました。

これが誰かに役立つことを願っています!

于 2012-09-19T09:33:59.597 に答える