猿问

阻止在 Laravel 5.8 中发送验证电子邮件地址电子邮件

我在我的用户模型上使用 Laravel Notifiable trait,因此用户必须在能够登录之前验证他们的电子邮件地址,这很好用。


但是,我想将此电子邮件的发送延迟到应用程序中的稍后时间点(当管理员手动确认每个用户时)。


如何防止 Laravel 在创建帐户时发送验证电子邮件?


手动创建用户时,您可以使用 SendsPasswordResetEmails trait 在您的应用程序中随时发送验证电子邮件:


use SendsPasswordResetEmails;

$this->sendResetLinkEmail($request);

问题是我在标准 Laravel 身份验证脚手架中找不到此代码以防止它发生。


手掌心
浏览 228回答 2
2回答

扬帆大鱼

该Notifiable特性来说并不算什么发送电子邮件验证的用户,但MustVerifyEmail界面,你的User模型实现。因此,为了手动执行此操作,您需要做的是从EventServiceProvider $listen 映射:Registered::class => [     SendEmailVerificationNotification::class,     ]然后稍后您可以找到User要将电子邮件验证发送到的目标,并像这样发送电子邮件:User::find($userId)->sendEmailVerificationNotification();

UYOU

它是MustVerifyEmailLaravel 用来施展魔法的接口。Laravel 检查要通知的类(即User)是否实现了该MustVerifyEmail接口,如果是,则发出验证通知。虽然您可以Registered从 中删除事件侦听器EventServiceProvider,但也可以implements MustVerifyEmail从User类中删除。通过保持事件侦听器完好无损并简单地MustVerifyEmail从User类中删除接口,您可以保持自动电子邮件验证系统完好无损,以防您确实想创建另一种类型的User类确实会收到自动电子邮件验证通知。因此,implements MustVerifyEmail从您的User课程中删除,然后sendEmailVerificationNotification()在您想要发送验证电子邮件时手动呼叫您的用户。
随时随地看视频慕课网APP
我要回答