使用CakeEmail与ajax方法


Using CakeEmail with ajax method

我试图发送一个简单的电子邮件与CakeEmail对ajax方法。我认为ajax调用是问题所在,如果我在其中包含电子邮件功能,则返回400个错误请求。否则它工作得很好。是否有一些特殊的配置,我需要做使用CakeEmail在一个ajax控制器方法?还是这根本不可能?

只是试着运行一个标准的CakeEmail,没什么特别的:

$email = new CakeEmail();
        $email->config = $this->ses;
        $email->from('contact@mydomain.com',Configure::read('Site.title'))
            ->to($user['User']['email'])
            ->subject(__d('croogo', '[%s] Discount Approved', Configure::read('Site.title')))
            ->template('Users.apply_approve')
            ->theme($this->theme)
            ->viewVars(array('user' => $user))
            ->send();

ses是AppController中的一个配置:

    public $ses = array(
    'host' => 'ssl://email-smtp.us-east-1.amazonaws.com',
    'port' => 25,
    'username' => '****',
    'password' => '****',
    'transport' => 'Smtp',
    'tls' => true
);

我在其他领域使用这个(ajax请求之外)在常规形式的帖子,它工作得很好。

检查Apache日志(谢谢Borislav),它说:

PHP Fatal error:  Call to a member function viewVars() on a non-object in...

所以看起来在Ajax请求中CakeEmail没有使用viewVars

->viewVars(array('user' => $user))

删除

->theme($this->theme) 

固定它。theme变量在ajax布局中不可用。