我正在使用laravel的ResetsPasswords特性来实现密码重置.我想要实现的是使用队列发送电子邮件.通过代码挖掘我在函数postEmail()中找到了以下行:
$response = Password::sendResetLink($request->only('email'), function (Message $message) { $message->subject($this->getEmailSubject()); });
进一步挖掘我注意到sendResetLink()函数是在PasswordBroker类中实现的,而PasswordBroker类又调用函数emailResetLink().emailResetLink函数返回以下内容:
return $this->mailer->send($view, compact('token', 'user'), function ($m) use ($user, $token, $callback) { $m->to($user->getEmailForPasswordReset());
我可以简单地mailer->send
改为mailer->queue
.如果不修改这个非项目文件,它们是更好的方法吗?
我知道这已经得到了解答,但我找到了排队密码重置通知的另一种方法,我发现这更简单.我在Laravel 5.3上测试过它.
默认情况下,密码重置通知由Illuminate\Auth\Notifications\ResetPassword
类实现.此类User
在sendPasswordResetNotification
方法中的模型中实例化并传递给trait notify
方法Illuminate\Notifications\Notifiable
.
因此,要对密码重置通知进行排队,您只需创建新的ResetPassword
通知类,artisan make:notification ResetPassword
并将其替换为以下代码:
现在只需
sendPasswordResetNotification
在您的App\User
类中覆盖方法:notify(new ResetPasswordNotification($token)); }