我正在创建一个延迟发送电子邮件的脚本。每当我安排一封电子邮件时,我都想把发送电子邮件所需的所有信息(收件人、主题、内容等)放在一个数据库表中。这样我的电子邮件发送脚本就可以简单地做一件事:发送电子邮件。它不必为不同的视图而烦恼,设置正确的视图变量,视图变量等等。每个模板都有不同的视图变量,我不想在发送电子邮件的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将简单地从表行中获取未发送的电子邮件,设置适当的参数并发送它。
那么,我如何才能获得模型内部的渲染视图数据,并将其保存在变量中呢?或者,有没有更好的方法来实现这一点?
1条答案
按热度按时间bvk5enib1#
您好,这是一个错误的发送邮件的方式在cakephp中,我们不能访问或渲染模型中的视图。所以用另一种方法,您可以使用cakephp shell来发送邮件。下面的链接您读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