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
答案 0 :(得分:1)
(如果您使用Gmail地址发送邮件)。那么您需要使用不太安全的应用。
转到https://myaccount.google.com/lesssecureapps
然后将其打开。
并同时使用
php artisan config:clear
有时,当您尝试通过某些代码发送电子邮件时,Google会阻止。在这种情况下,您会收到一封警报邮件。单击该邮件(检查活动),然后标记为是(您识别此活动吗?)
或者您可以尝试
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服务器后才会更新。