恢复未发送给用户laravel的密码邮件

时间:2019-03-05 09:05:22

标签: php laravel laravel-5 laravel-5.6

laravel中的密码恢复电子邮件未发送给用户 这是我在控制器中的功能:

public function recover(Request $request)
{
    $validator = Validator::make($request->only('email'), [
        'email' => 'required'
    ]);

    if($validator->fails()) {
        throw new ValidationHttpException($validator->errors()->all());
    }

    $response = Password::sendResetLink($request->only('email'), function (Message $message) {
        $message->subject(Config::get('boilerplate.recovery_email_subject'));
    });

    switch ($response) {
        case Password::RESET_LINK_SENT:
          //  return $this->response->noContent();
            return response()->json(['success' => true, 'data' => $response], 200);
        case Password::INVALID_USER:
        //    return $this->response->errorNotFound();
            return response()->json(['success' => false, 'data' => $response], 200);

    }
}

,然后配置.env和mail.php 我使用laravel 5.6

2 个答案:

答案 0 :(得分:1)

  1. (如果您使用Gmail地址发送邮件)。那么您需要使用不太安全的应用。

    转到https://myaccount.google.com/lesssecureapps

    然后将其打开。

    并同时使用

 php artisan config:clear 
  1. 有时,当您尝试通过某些代码发送电子邮件时,Google会阻止。在这种情况下,您会收到一封警报邮件。单击该邮件(检查活动),然后标记为是(您识别此活动吗?)

  2. 或者您可以尝试

MAIL_DRIVER=sendmail

并同时使用

php artisan config:clear 

答案 1 :(得分:0)

首先,尝试找出问题所在。

我建议在执行此功能后尝试设置MAIL_DRIVER=log并检查laravel.log。如果在日志中未找到任何内容,则您不尝试发送它。在这种情况下,最常见的问题是使用队列,因此,请检查.env中的QUEUE_CONNECTION变量,它应等于“ sync”(或设置驱动程序,如需要,如Redis)。

通过使用“日志”驱动程序,您应该在日志中看到您的消息。如果它可以与“ log”一起正常工作,而不能与smtp一起工作,那么您应该会得到一个错误消息。如果出现错误-请发布。如果不是,请也这样说。

P.S。请注意,如果您使用的是php artisan serve,则.env中的所有变量只有在重新启动php服务器后才会更新。