我试图发送一个简单的电子邮件与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布局中不可用。