2017-04-13 147 views
0

我正在使用laravel 5.0应用程序忘记密码功能。我要求用户输入注册的电子邮件并提交(post method)这个表单在jquery ajax post request上工作。从请求中收到电子邮件后,我在数据库中检查它是否存在。如果存在,我正在更新新密码,如果没有发送错误信息到此,每一个都没有问题。现在我试图用新密码发送电子邮件给用户,它不起作用。密码被更新,但没有电子邮件下面sending.Find
邮件没有从ajax发布请求发送laravel 5

public function forgot_pass(Request $request){ 

     $email = $request->input('femail'); 
     $data = ['email' => $email]; 

     $user = Myuser::where($data)->count(); 

     if($user == 0){ 
      return response()->json(['status' => 'Invalid']); 
     } 
     else{ 

      $user_details = Myuser::where($data)->get()->first(); 

      $new_pass = $this->generateRandomString(); 

      $md5_pass = md5("EEE".$new_pass); 

      $status = Myuser::where('email', $email) 
       ->update(['pass' => $md5_pass]); 

       if($status){ 

        $mail_data = ['name' => $user_details->name, 'new_pass' => $new_pass]; 

        Mail::send('emails.newpassword', $mail_data, function($message) 
        { 
         $message->from('[email protected]', 'Laravel'); 

         $message->to($email); 

        }); 

        return response()->json(['status' => 'Invalid']); 
       } 

     } 

    } 

其实我的控制器代码的邮件工作,如果我用$message->to('[email protected]');代替$message->to($email);。以下是我得到的错误。
enter image description here

感觉奇怪,为什么$email导致错误。

+0

你必须在路线URL呼叫方法不对。 –

+0

@Autista_z什么错的方法?我没有得到你。 – prudhvi259

回答

1

你必须在$email传递给匿名函数

Mail::send('emails.newpassword', $mail_data, function($message) use ($email) { 
... 
}); 
+0

非常感谢。你节省了我的时间。它效果很好。 – prudhvi259