2

CakeEmailでメールを送信しようとしていますが、$email->to()メソッドで失敗します。エラーメッセージはこの画像で見ることができます:http://i47.tinypic.com/240yq86.png

基本的に、次の2つのエラーが発生します。

Warning (2): preg_match() expects parameter 2 to be string, object given [CORE/Cake/Utility/Validation.php, line 815]
Warning (4096): Object of class CakeEmail could not be converted to string [CORE/Cake/basics.php, line 566]

これが私のsendEmail()方法です:

function sendEmail($id, $email, $token)
{      
    print_r($email);
    $email = new CakeEmail();
    $email->from('admin@gmail.com');
    $email->to($email);
    $email->subject('Activate your account');     
    $activate_url = 'http://' . env('SERVER_NAME') .'/users/activate/'.$id.'/'.$token;
    $message = "Thank you for signing up. Click on the activation link to activate your account \n";
    return $email->send($message.$activate_url);
}
4

3 に答える 3

3

基本的なphpエラーがあります:

関数param2の名前を$to;に変更します。
に変更print_r($email)print_r($to)ます。
$ email-> to($ email);を変更します。to$ email-> to($ to); `

于 2013-03-25T04:53:20.603 に答える
1

編集:他の人が拾った明らかな問題を完全に見逃しました...

だから、私はクラスの構成を混乱させたかもしれない他の問題を探していました...

http://book.cakephp.org/2.0/en/core-utility-libraries/email.htmlに従って、配列を受け入れます(ただし、配列を使用する必要from()あることは明示されていません)。

代わりに次の行を試してください。

$email->from(array('admin@gmail.com' => 'Admin at gMail'));

于 2013-03-25T04:46:03.167 に答える
0

inパラメータは、別の変数に変更することで$email上書きされることに注意してください$email = new CakeEmail()$to

function sendEmail($id, $to, $token)
{      
    print_r($email);
    $email = new CakeEmail();
    $email->from('admin@gmail.com');
    $email->to($to);
    $email->subject('Activate your account');     
    $activate_url = 'http://' . env('SERVER_NAME') .'/users/activate/'.$id.'/'.$token;
    $message = "Thank you for signing up. Click on the activation link to activate your account \n";
    return $email->send($message.$activate_url);
}
于 2013-03-25T04:59:06.630 に答える