0

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

4

2 回答 2

3

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

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

也可以看看

于 2017-02-28T16:09:34.227 回答
-2

/// 电子邮件格式 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

/// 电子邮件格式

$email->setTemplate('welcome', 'registration') ->setEmailFormat('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

于 2017-02-27T11:06:24.053 回答