在 Laravel 5.5 中使用 Mailable 而不是 MailMessage 来发送密码重置邮件

Using a Mailable instead of a MailMessage for password reset emails in Laravel 5.5

我希望我的应用程序对其发送的所有电子邮件都使用 Mailables,因此我创建了自己的 ResetPasswordEmail class 来扩展 Mailable。然后我创建了自己的 ResetPassword 通知 class 扩展了同名的供应商 class 并覆盖了 toMail 方法,如下所示:

public function toMail($notifiable)
{
    return (new ResetPasswordEmail())->with('token', $this->token);
}

然后我在 User 模型中覆盖 CanResetPassword 特征中的 sendPasswordResetNotification,如下所示:

public function sendPasswordResetNotification($token)
{
    $this->notify(new ResetPassword($token));
}

正在调用我的自定义 ResetPassword 通知 class。

问题是,如果我使用创建 MailMessage 并发送它的默认方法,它会自动使用用户的电子邮件填充“to”字段。但是当我使用我的 ResetPasswordEmail 可邮寄 class 时,它不会。

有什么好的方法可以让它像我的自定义邮寄一样工作吗?

最后我只是像这样为我的 Mailable 实例设置 "to" 字段:

public function toMail($notifiable)
{
    return (new ResetPasswordEmail())->with('token', $this->token)->to($notifiable->email);
}

由于 $notifiable 在这种情况下是 User 模型的一个实例,所以我可以这样收到电子邮件。我不知道这是否是最好的方法,但它确实有效。