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

时间:2019-06-17 16:32:22

标签: php laravel

我在用户模型上使用了Laravel Notifiable特征,因此用户必须先验证其电子邮件地址才能登录,这很好。

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

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

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

use SendsPasswordResetEmails;
$this->sendResetLinkEmail($request);

问题是我无法在标准Laravel身份验证支架中找到此代码以防止其发生。

2 个答案:

答案 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