我在用户模型上使用了Laravel Notifiable特征,因此用户必须先验证其电子邮件地址才能登录,这很好。
但是,我想将此电子邮件的发送延迟到应用程序中的下一个点(当管理员手动确认每个用户时)。
如何防止Laravel在创建帐户时发送验证电子邮件?
在手动创建用户时,您可以随时在应用程序中使用SendsPasswordResetEmails特性发送验证电子邮件:
use SendsPasswordResetEmails;
$this->sendResetLinkEmail($request);
问题是我无法在标准Laravel身份验证支架中找到此代码以防止其发生。
答案 0 :(得分:1)
Notifiable
特性不是向用户发送电子邮件验证的内容,而是MustVerifyEmail
模型实现的User
接口。
因此,要手动执行此操作,您需要从
中删除此行 EventServiceProvider
$listen
映射:
Registered::class => [
SendEmailVerificationNotification::class,
]
,然后在以后找到要发送电子邮件验证的User
,并像这样发送电子邮件:
User::find($userId)->sendEmailVerificationNotification();
答案 1 :(得分:0)
正如@nakov所提到的,它是MustVerifyEmail
接口,Laravel用于执行其魔术。 Laravel检查要通知的类(即User
)是否实现了MustVerifyEmail
接口,如果是,则发送验证通知。
虽然您可以从Registered
删除EventServiceProvider
事件监听器,但也可以从implements MustVerifyEmail
类中删除User
。
通过保持事件侦听器完好无损,并且只需从MustVerifyEmail
类中删除User
接口,就可以保持自动电子邮件验证系统完好无损,以防您确实想创建其他类型的{{ 1}}类确实会收到自动电子邮件验证通知。
因此,请从您的User
类中删除implements MustVerifyEmail
,然后在您要发送验证电子邮件的任何时候手动对用户调用User
。