我正在构建一个延迟的电子邮件发送脚本。每当我安排一封电子邮件时,我都希望继续将所有发送电子邮件所需的信息(包括,主题,内容等)放在数据库表中。这样我的电子邮件发送脚本可以做一件事;发送电子邮件。它不必打扰不同的视图,设置正确的视图变量,查看变量等。每个模板将有不同的视图变量,我不想在发送电子邮件cron中处理所有这些。所以,假设我想安排一封欢迎电子邮件:
// 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 :(得分:0)
嗨,这是从Model In Cakephp发送电子邮件的错误方式,我们无法在模型中访问或呈现视图。因此,请使用另一种方法,您可以使用cakephp shell发送电子邮件。 您可以在下面链接中阅读cakehall
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