在 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
模型的一个实例,所以我可以这样收到电子邮件。我不知道这是否是最好的方法,但它确实有效。
我希望我的应用程序对其发送的所有电子邮件都使用 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
模型的一个实例,所以我可以这样收到电子邮件。我不知道这是否是最好的方法,但它确实有效。