Cakephp 3.4 - 电子邮件setTemplate()似乎无法正常工作

时间:2017-02-27 05:38:08

标签: cakephp-3.4

我已升级到Cakephp 3.4,现在正在进行代码迁移。我将我的电子邮件功能修改为以下内容:

 $email->setTemplate('welcome', 'registration')
       ->setSubject($subject)
       ->setEmailFormat('html')  
       ->setTo($toEmail)
       ->setFrom($fromEmail)
       ->send();

但是电子邮件没有任何模板发送。但是,如果我将其更改回

$email->template('welcome', 'registration')

然后再次使用模板发送电子邮件。 setTemplate()函数似乎不适合我。任何人都可以帮我弄清楚我错过了什么。

修改 html文件位于 SRC /模板/电子邮件/ HTML / welcome.ctp 并且布局位于 src / Template / Layout / Email / html / registration.ctp

2 个答案:

答案 0 :(得分:3)

正如评论中已经提到的,与已弃用的Email::template()方法(可用于设置模板和布局)不同,Email::setTemplate()不接受第二个参数,并且仅设置模板。

使用新引入的setter方法,可以通过单独的Email::setLayout()方法设置布局。 “食谱”中用于发送模板化电子邮件的示例不正确,现已修复。

另见

答案 1 :(得分:-1)

///电子邮件格式HTML

  

$ email-> setTemplate('welcome','registration')       - > setEmailFormat( 'HTML')       - > setTo('bob@example.com')       - > setFrom('app@domain.com')       - >置于();

这将使用以下模板文件:

  

的src /模板/电子邮件/ HTML / welcome.ctp      SRC /模板/布局/电子邮件/ HTML / registration.ctp

///电子邮件格式TEXT

  

$ email-> setTemplate('welcome','registration')       - > setEmailFormat( '文本')       - > setTo('bob@example.com')       - > setFrom('app@domain.com')       - >置于();

这将使用以下模板文件:

  

的src /模板/电子邮件/文本/ welcome.ctp      SRC /模板/布局/电子邮件/文本/ registration.ctp

///电子邮件格式BOTH

  

$ email-> setTemplate('welcome','registration')       - > setEmailFormat( '两者')       - > setTo('bob@example.com')       - > setFrom('app@domain.com')       - >置于();

这将使用以下模板文件:

  

的src /模板/电子邮件/文本/ welcome.ctp      SRC /模板/布局/电子邮件/文本/ registration.ctp      SRC /模板/电子邮件/ HTML / welcome.ctp      SRC /模板/布局/电子邮件/ HTML / registration.ctp