错误:在 CakePHP 上调用数组上的成员函数 viewVars()

ita*_*mar 1 php email cakephp

我正在尝试使用 cakephp 发送电子邮件。我的设置代码如下。如果我切换 gmail 或 fast 的配置,或者将 viewVars 添加到其他电子邮件设置,这并不重要 - 我收到此错误:

Call to a member function viewVars() on array   
Run Code Online (Sandbox Code Playgroud)

如果我从新的 CakeEmail() 块中删除 viewVars 行 - 它给了我

 Call to a member function send() on array  
Run Code Online (Sandbox Code Playgroud)

这让我觉得我的设置有问题?

我在控制器中设置了电子邮件,如下所示:

$email = new CakeEmail();
            $email->template('remember_password', 'default')
                    ->config('default')
                    ->emailFormat('html')
                    ->subject(__('Remember password - ' . Configure::read('Application.name')))
                    ->to($user['User']['email'])
                    ->from(Configure::read('Application.from_email'))
                    ->viewVars(array('hash' => $hash))
                    ->send();
Run Code Online (Sandbox Code Playgroud)

设置是这样的:

class EmailConfig {

  public $default = array(
    'transport' => 'Mail',
    'from' => 'myemail@email.com',
    //'charset' => 'utf-8',
    //'headerCharset' => 'utf-8',
    );

  public $smtp = array(
    'transport' => 'Smtp',
    'from' => array('myemail@email.com' => 'My Site'),
    'host' => 'localhost',
    'port' => 25,
    'timeout' => 30,
    'username' => 'user',
    'password' => 'secret',
    'client' => null,
    'log' => false,
    //'charset' => 'utf-8',
    //'headerCharset' => 'utf-8',
    );

  public $gmail = array(
    'host' => 'ssl://smtp.gmail.com',
    'port' => 465,
    'username' => 'myemail@email.com',
    'password' => 'password',
    'transport' => 'Smtp',
    );

  public $fast = array(
    'from' => 'myemail@email.com',
    'sender' => null,
    'to' => null,
    'cc' => null,
    'bcc' => null,
    'replyTo' => null,
    'readReceipt' => null,
    'returnPath' => null,
    'messageId' => true,
    'subject' => null,
    'message' => null,
    'headers' => null,
    'viewRender' => null,
    'template' => false,
    'layout' => false,
    'viewVars' => null,
    'attachments' => null,
    'emailFormat' => null,
    'transport' => 'Smtp',
    'host' => 'localhost',
    'port' => 25,
    'timeout' => 30,
    'username' => 'user',
    'password' => 'secret',
    'client' => null,
    'log' => true,
    //'charset' => 'utf-8',
    //'headerCharset' => 'utf-8',
    );
Run Code Online (Sandbox Code Playgroud)

ndm*_*ndm 5

Application.from_email不存在或 is null,导致作为参数CakeEmail::from()接收,导致它充当 getter,即它将返回当前值,这是一个数组,因此会出现错误。nullfrom