我已升级到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
答案 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