web-dev-qa-db-fra.com

Laravel 5.7 - L'e-mail de vérification n'est pas envoyé

J'ai mis à niveau mon laravel instance de la version 5.6 à la version 5.7. Maintenant, j'essaie d'utiliser vérification intégrée des e-mails de laravel .

Mon problème est que je ne reçois pas d'e-mail après une inscription réussie lorsque j'utilise la fonction "renvoyer" l'e-mail arrive.

Quel est le problème?

6
Markus

J'ai eu exactement le même problème. C'est le code par défaut de Laravel.

Pour envoyer l'e-mail après une inscription réussie, vous pouvez procéder comme suit:

dans App\Http\Controllers\Auth\RegisterController

changez ceci:

protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }

à ceci:

protected function create(array $data)
    {
        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);

        $user->sendEmailVerificationNotification();

        return $user;
    }

J'ai également eu le même problème. Comme j'ai vérifié le code source, il n'est pas nécessaire de l'implémenter pour appeler la méthode sendEmailVerificationNotfication(), vous devez simplement ajouter le gestionnaire d'événements à votre EventServiceProvider.php, car votre gestionnaire d'événements a été créé précédemment, donc Larael ne peut pas le mettre à jour. Ça devrait ressembler à ça:

namespace App\Providers;

use Illuminate\Support\Facades\Event;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
    ];
4
laze

au cas où quelqu'un d'autre chercherait une solution au même problème.

veuillez lire la documentation, elle explique exactement ce qui doit être fait pour résoudre ce problème

https://laravel.com/docs/5.7/verification

en un mot, et si vous utilisez déjà 5.7 (c'est-à-dire que vous avez les champs nécessaires dans votre table users) tout ce que vous devez faire est le suivant:

  • faites en sorte que votre modèle User implémente l'interface MustVerifyEmail.
  • ajoutez ['verify' => true] à la méthode Auth::routesAuth::routes(['verify' => true]);

vous pouvez trouver tout ce dont vous avez besoin concernant la vérification des e-mails dans le lien ci-dessus.

2
djug

En plus de la réponse de djug, si vous rencontrez le même problème après la mise à niveau de la version 5.6, comme je l'ai fait, vous trouverez un guide étape par étape que mettre en œuvre ici:

https://laravel.com/docs/5.7/upgrade

sous la section Vérification des e-mails

J'espère que cela aide quelqu'un, car je me débattais pas mal avec ça.

2
Adam Brzeziński

Si vous avez une page d'inscription personnalisée, vous pouvez simplement déclencher l'événement après avoir créé l'utilisateur comme suit:

event(new Registered($user));

2
Zane