0

我正在尝试通过 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))
4

1 回答 1

0

移除

->theme($this->theme) 

解决它。主题变量在 ajax 布局中不可用。

于 2013-05-13T15:25:34.693 回答