簡體   English   中英

阻止在Laravel 5.8中發送驗證電子郵件地址電子郵件

[英]Block the verify e-mail address e-mail from being sent in Laravel 5.8

我在用戶模型上使用了Laravel Notifiable特質,因此用戶必須先驗證其電子郵件地址才能登錄,這很好。

但是,我想將此電子郵件的發送延遲到應用程序中的以后(管理員手動確認每個用戶時)。

如何防止Laravel在創建帳戶時發送驗證電子郵件?

手動創建用戶時,可以隨時使用SendsPasswordResetEmails特性發送驗證電子郵件:

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

問題是我無法在標准Laravel身份驗證支架中找到此代碼以防止其發生。

Notifiable特質不是向用戶發送電子郵件驗證的內容,而是User模型實現的MustVerifyEmail接口。

因此,要手動執行此操作,您需要從

EventServiceProvider $listen映射:

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

然后在以后找到要向其發送電子郵件驗證的User並向其發送電子郵件,如下所示:

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

正如@nakov所提到的,Laravel用來執行它的魔術是MustVerifyEmail接口。 Laravel檢查要通知的類(即User )是否實現MustVerifyEmail接口,如果是,則發送驗證通知。

盡管可以從EventServiceProvider刪除Registered事件偵聽器,但也可以從User類中刪除implements MustVerifyEmail

通過保持事件偵聽器MustVerifyEmail並只需從User類中刪除MustVerifyEmail接口,就可以使自動電子郵件驗證系統保持完整,以防萬一您要創建另一種User類確實收到了自動電子郵件驗證通知。

因此,從您的User類中刪除implements MustVerifyEmail ,然后在您要發送驗證電子郵件時在您的用戶上手動調用sendEmailVerificationNotification()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM