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 に答える