cakephp 3.7如何设置电子邮件布局和模板

cakephp 3.7如何设置电子邮件布局和模板,cakephp,cakephp-3.7,Cakephp,Cakephp 3.7,如何设置电子邮件布局和模板 $email = new Email('default'); $email->setFrom($from) ->setTo('test@gmail.com') ->setSubject('Test email') ->setEmailFormat('html') ->viewBuilder()->setLayout('my-email-layout') ->setVi

如何设置电子邮件布局和模板

$email = new Email('default');
$email->setFrom($from)
      ->setTo('test@gmail.com')
      ->setSubject('Test email')
      ->setEmailFormat('html')
      ->viewBuilder()->setLayout('my-email-layout')
      ->setViewVars([
            'name' => Alex
       ])
       ->send('My message');
电子邮件打印出来了

[protected] _viewBuilder => object(Cake\View\ViewBuilder) {
    [protected] _templatePath => null
    [protected] _template => ''
    [protected] _plugin => null
    [protected] _theme => null
    [protected] _layout => 'default'
    [protected] _autoLayout => null
    [protected] _layoutPath => null
    [protected] _name => null
    [protected] _className => 'Cake\View\View'
    [protected] _options => []
    [protected] _helpers => [
        (int) 0 => 'Html'
    ]
    [protected] _vars => []
}

我想出来了。viewBuilder必须是最后一个参数。“发送”必须单独呼叫

$email = new Email('default');
$email->setFrom($from)
      ->setTo('test@gmail.com')
      ->setSubject('Test email')
      ->setEmailFormat('html')
      ->setViewVars([
            'name' => Alex
       ])
      ->viewBuilder()
          ->setLayout('my-email-layout')
          ->setTemplate('default');

$email->send('My message');

我想出来了。viewBuilder必须是最后一个参数。“发送”必须单独呼叫

$email = new Email('default');
$email->setFrom($from)
      ->setTo('test@gmail.com')
      ->setSubject('Test email')
      ->setEmailFormat('html')
      ->setViewVars([
            'name' => Alex
       ])
      ->viewBuilder()
          ->setLayout('my-email-layout')
          ->setTemplate('default');

$email->send('My message');

您的代码片段似乎是正确的。有错误吗?您发布的代码段是否有错误?在我的上一个项目中,我不必在->viewBbuilder:$email=newemail'default'之后链接$email->setTo$user->email->setSubject'2deal:New Account'->setViewVars['user'=>$user,'token'=>$token]->setEmailFormat'html'$电子邮件->视图生成器->设置模板“激活您的帐户”$电子邮件->发送;不幸的是,在viewBuilder之后出现了什么对象?电子邮件对象认为该对象是viewBuilder的一部分。例如,我现在得到这个错误错误:调用未定义的方法Cake\View\ViewBuilder::send You code snippet似乎是正确的。有错误吗?您发布的代码段是否有错误?在我的上一个项目中,我不必在->viewBbuilder:$email=newemail'default'之后链接$email->setTo$user->email->setSubject'2deal:New Account'->setViewVars['user'=>$user,'token'=>$token]->setEmailFormat'html'$电子邮件->视图生成器->设置模板“激活您的帐户”$电子邮件->发送;不幸的是,在viewBuilder之后出现了什么对象?电子邮件对象认为该对象是viewBuilder的一部分。例如,我现在得到这个错误错误:调用未定义的方法Cake\View\ViewBuilder::send