我正在使用CakePHP 1.3和内置电子邮件功能,如documentation中所述。我在app / views / elements / email / html / reservation.ctp中有模板的html版本,并且它按预期工作。
$this->Email->template = 'reservation'; // no '.ctp'
我还有一个主题设置,大多数主题文件都正确覆盖了默认文件。我的问题是主题电子邮件模板在从主题网站调用时未被使用,它仍然使用默认路径中的电子邮件模板文件。
默认位于:app / views / elements / email / html / reservation.ctp
主题位于:app / views / themed / myTheme / elements / email / html / reservation.ctp
电子邮件模板分配是否应自动使用主题而无需对路径进行硬编码或是否有其他解决方案?其他人有这个问题吗?
答案 0 :(得分:0)
。让我们假设我们想要创建一个Html电子邮件。和电子邮件配置已配置。
视图[文件结构]:
1)带有变量的内容电子邮件应位于View / Emails / html [reservation.ctp]中 2)您的模板应位于View / Layouts / Emails / html [default.ctp或您制作的任何新模板]中
控制器:
注意:有些人认为在编写动作时(在控制器中),您必须为其编写视图。在这种情况下(用于发送电子邮件)是完全错误的。只有当你想显示成功或不成功发送电子邮件的结果时才可以。
让我们说ReserveController;)和sendReservationEmail
function sendReservationEmail( $to, $from,$subject ,$template, $variables=array()){
$Email = new CakeEmail();
$Email->config('smtp')
->viewVars($variables)
->emailFormat('html')
->template($template['page'], $template['layout']) //'reservation', 'default'
->from($from) //'me@example.com' => 'My Site'
->to($to) //'you@example.com'
->subject($subject) //'Resevation'
->send();
}
观点(查看/电子邮件/ html / reservation.ctp):
Dear $this->viewVars['name'];
Welcome to our restaurant .....