【问题标题】:Block the verify e-mail address e-mail from being sent in Laravel 5.8在 Laravel 5.8 中阻止发送验证电子邮件地址电子邮件
【发布时间】:2019-06-17 16:32:22
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    Notifiable 特征不是向用户发送电子邮件验证,而是您的 User 模型实现的 MustVerifyEmail 接口。

    因此,为了手动执行此操作,您需要做的是从

    中删除此行

    EventServiceProvider$listen 映射:

    Registered::class => [
        SendEmailVerificationNotification::class,
    ]
    

    然后稍后您可以找到您要向其发送电子邮件验证的User,并像这样发送电子邮件:

    User::find($userId)->sendEmailVerificationNotification();
    

    【讨论】:

      【解决方案2】:

      正如@nakov 提到的,Laravel 使用 MustVerifyEmail 接口来执行它的魔法。 Laravel 检查要通知的类(即User)是否实现了MustVerifyEmail 接口,如果是,则发出验证通知。

      虽然您可以从 EventServiceProvider 中删除 Registered 事件侦听器,但您也可以从 User 类中删除 implements MustVerifyEmail

      通过保持事件侦听器保持不变并简单地从 User 类中删除 MustVerifyEmail 接口,您可以保持自动电子邮件验证系统保持不变,以防您确实想要创建另一种类型的 User 类自动电子邮件验证通知。

      因此,请从您的 User 类中删除 implements MustVerifyEmail,然后在您想要发送验证电子邮件时手动调用您的用户的 sendEmailVerificationNotification()

      【讨论】:

        猜你喜欢
        • 2022-01-06
        • 2014-11-21
        • 2019-06-24
        • 2019-10-18
        • 2020-03-02
        • 2019-11-25
        • 2012-08-17
        • 2014-09-18
        • 2012-07-14
        相关资源
        最近更新 更多