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 中用于发送模板电子邮件的示例不正确,现已修复。

另见