我正在尝试使用CakeEmail在ajax方法上发送一封简单的电子邮件。我假设ajax调用是问题,如果我在其中有电子邮件功能,则返回400错误请求。否则它工作正常。在ajax控制器方法中使用CakeEmail是否需要进行一些特殊配置?或者这是不可能的?
只是尝试运行标准的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))
答案 0 :(得分:0)
删除
->theme($this->theme)
修好了。主题变量在ajax布局中不可用。