Laravel Notify не отправляет письмо в Mailtrap

Я хочу, чтобы система входа в Laravel отправляла мне электронные письма после входа на веб-сайт. Вот мой метод authenticated из LoginController.

if ($user->hasTwoFactorAuthenticatedEnabled()) {
    auth()->logout();

    $request->session()->flash('auth', [
        'user_id' => $user->id,
        'using_sms' => false,
        'remember' => $request->has('remember')
    ]);

    if ($user->two_factor_type == 'sms') {
        $code = ActiveCode::generateCode($user);
        // Todo Send Sms
        $request->session()->push('auth.using_sms', true);
    }

    return redirect(route('2fa.token'));
}

$user->notify(new LoginToWebsiteNotification());

return false;

Как видите, я добавил $user->notify(new LoginToWebsiteNotification()); и LoginToWebsiteNotification удержания:

class LoginToWebsiteNotification extends Notification
{
    use Queueable;
    
    public function __construct()
    {
        //
    }

    public function via($notifiable)
    {
        return ['mail'];
    }

    public function toMail($notifiable)
    {
        return (new MailMessage)
            ->subject('u Loggedin')
            ->view('emails.login-to-website');
    }

    public function toArray($notifiable)
    {
        return [
            //
        ];
    }
}

Проблема здесь в том, что после входа в систему ничего не отправляется на адрес электронной почты пользователя. Обратите внимание, что настройки почты работают нормально, и я проверял их при регистрации нового пользователя на сайте. Поэтому, если вы знаете, почему этот метод уведомления отправляет мне электронное письмо, пожалуйста, дайте мне знать; Я был бы очень признателен за любую идею от вас, ребята.


person ruwroveajaic    schedule 09.12.2020    source источник
comment
Вы проверили storage/logs/laravel.log на наличие ошибок? Может 2FA включен и возвращается раньше?   -  person codedge    schedule 09.12.2020
comment
Да, он пустой   -  person ruwroveajaic    schedule 09.12.2020
comment
Вы добавили use Notifiable; в свою модель User?   -  person Dimitri Mostrey    schedule 10.12.2020
comment
@DimitriMostrey Да, я сделал   -  person ruwroveajaic    schedule 12.12.2020
comment
Если $user->hasTwoFactorAuthenticatedEnabled() оценивается как true, строка для $user-›notification никогда не достигается, выполнение метода завершается до этого внутри if() при возврате redirect(route('2fa.token')) - вы проверяли это - вы можете просто dd($user->hasTwoFactorAuthenticatedEnabled()) и проверить   -  person Donkarnash    schedule 13.12.2020


Ответы (1)


Я проверил это, и он отлично работает.

Вызовите $user->notify(new LoginToWebsiteNotification()); ПЕРВЫМ, а затем запускаются другие коды:

protected function authenticated(Request $request, $user)
    {
        $user->notify(new LoginToWebsiteNotification());
        // rest of the code
    }
person POOYAA    schedule 18.12.2020
comment
Мужик, спасибо, просто и полезно! Не могли бы вы также взглянуть на этот вопрос: stackoverflow.com/questions/65300381/ - person ruwroveajaic; 19.12.2020