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))