2016-07-08 9 views
0

私は遅延メール送信スクリプトを作成しています。電子メールのスケジュールを設定するたびに、電子メールを送信するために必要なすべての情報(to、subject、contentなど)をデータベーステーブルに配置したいと考えています。これは私の電子メール送信スクリプトが単に1つのことを行うことができるようにするためです。メールを送る。これは、異なるビューを気にする必要はありません、正しいビューのバールを設定する、など、各ビューアは、ビューのバールを持っています、私は送信メールcronでこれをすべて処理する必要はありません。それでは、私は歓迎メールをスケジュールしたいとしましょう:CakePHP:モデルでCakeEmailテンプレート出力を生成

// Schedule the welcome email from anywhere 
$this->EmailLog->scheduleWelcomeEmail($member_id); 

// EmailLog model 
public function scheduleWelcomeEmail($member_id) { 
    // lookup $member_id 
    // uses 'welcome' template 

    $data = array(
     'subject' => 'Welcome', 
     'to' => $member['Member']['email'], 
     'html' => // NEED RENDERED DATA FROM 'welcome' TEMPLATE 
    ); 

    $this->create(); 
    $this->save($data);// SAVE the row - DO NOT actually send email 
} 

次に、バックグラウンドで実行するcronは、単純に、テーブルの行から未送信のメールをつかむ適切なパラメータを設定し、それを送信します。

したがって、モデル内のレンダリングされたビューデータを変数に保存するにはどうすればよいですか?または、これについてもっと良い方法がありますか?

答えて

0

こんにちは、これはモデルのcakephpから電子メールを送信する間違った方法です。私たちはモデルのビューにアクセスしたりレンダリングすることはできません。だから別のアプローチに行くと、あなたは電子メールを送信するためにcakephpシェルを使用することができます。あなたはcakeshall

http://book.cakephp.org/2.0/en/console-and-shells/cron-jobs.html

http://book.cakephp.org/2.0/en/console-and-shells/cron-jobs.html

ために読んリンクの下に
関連する問題