Cakephp 3.4 - 电子邮件 setTemplate() 似乎不起作用
Cakephp 3.4 - Email setTemplate() seems to be not working
我已经升级到 Cakephp 3.4,现在正在进行我的代码迁移。我将我的电子邮件功能修改为以下内容:
$email->setTemplate('welcome', 'registration')
->setSubject($subject)
->setEmailFormat('html')
->setTo($toEmail)
->setFrom($fromEmail)
->send();
但是发送的电子邮件没有任何模板。但是,如果我将其改回
$email->template('welcome', 'registration')
然后再次使用模板发送电子邮件。 setTemplate() 函数似乎对我不起作用。谁能帮我弄清楚我错过了什么。
编辑:
html 文件位于
src/Template/Email/html/welcome.ctp
布局位于
src/Template/Layout/Email/html/registration.ctp
/// 电子邮件格式 HTML
$email->setTemplate('welcome', 'registration')
->setEmailFormat('html')
->setTo('bob@example.com')
->setFrom('app@domain.com')
->send();
这将使用以下模板文件:
src/Template/Email/html/welcome.ctp
src/Template/Layout/Email/html/registration.ctp
/// 电子邮件格式 TEXT
$email->setTemplate('welcome', 'registration')
->setEmailFormat('text')
->setTo('bob@example.com')
->setFrom('app@domain.com')
->send();
这将使用以下模板文件:
src/Template/Email/text/welcome.ctp
src/Template/Layout/Email/text/registration.ctp
/// 电子邮件格式 BOTH
$email->setTemplate('welcome', 'registration')
->setEmailFormat('both')
->setTo('bob@example.com')
->setFrom('app@domain.com')
->send();
这将使用以下模板文件:
src/Template/Email/text/welcome.ctp
src/Template/Layout/Email/text/registration.ctp
src/Template/Email/html/welcome.ctp
src/Template/Layout/Email/html/registration.ctp
正如评论中已经提到的,与已弃用的 Email::template()
方法不同,该方法可用于设置模板和布局,Email::setTemplate()
不接受第二个参数,仅设置模板。
使用新引入的 setter 方法,需要通过单独的 Email::setLayout()
方法设置布局。 Cookbook 中用于发送模板电子邮件的示例不正确,现已修复。
另见
我已经升级到 Cakephp 3.4,现在正在进行我的代码迁移。我将我的电子邮件功能修改为以下内容:
$email->setTemplate('welcome', 'registration')
->setSubject($subject)
->setEmailFormat('html')
->setTo($toEmail)
->setFrom($fromEmail)
->send();
但是发送的电子邮件没有任何模板。但是,如果我将其改回
$email->template('welcome', 'registration')
然后再次使用模板发送电子邮件。 setTemplate() 函数似乎对我不起作用。谁能帮我弄清楚我错过了什么。
编辑: html 文件位于 src/Template/Email/html/welcome.ctp 布局位于 src/Template/Layout/Email/html/registration.ctp
/// 电子邮件格式 HTML
$email->setTemplate('welcome', 'registration') ->setEmailFormat('html') ->setTo('bob@example.com') ->setFrom('app@domain.com') ->send();
这将使用以下模板文件:
src/Template/Email/html/welcome.ctp src/Template/Layout/Email/html/registration.ctp
/// 电子邮件格式 TEXT
$email->setTemplate('welcome', 'registration') ->setEmailFormat('text') ->setTo('bob@example.com') ->setFrom('app@domain.com') ->send();
这将使用以下模板文件:
src/Template/Email/text/welcome.ctp src/Template/Layout/Email/text/registration.ctp
/// 电子邮件格式 BOTH
$email->setTemplate('welcome', 'registration') ->setEmailFormat('both') ->setTo('bob@example.com') ->setFrom('app@domain.com') ->send();
这将使用以下模板文件:
src/Template/Email/text/welcome.ctp src/Template/Layout/Email/text/registration.ctp src/Template/Email/html/welcome.ctp src/Template/Layout/Email/html/registration.ctp
正如评论中已经提到的,与已弃用的 Email::template()
方法不同,该方法可用于设置模板和布局,Email::setTemplate()
不接受第二个参数,仅设置模板。
使用新引入的 setter 方法,需要通过单独的 Email::setLayout()
方法设置布局。 Cookbook 中用于发送模板电子邮件的示例不正确,现已修复。
另见