我正在尝试通过 ajax 方法使用 CakeEmail 发送一封简单的电子邮件。我认为 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))