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?
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,
],
];
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:
User
implémente l'interface MustVerifyEmail
.['verify' => true]
à la méthode Auth::routes
Auth::routes(['verify' => true]);
vous pouvez trouver tout ce dont vous avez besoin concernant la vérification des e-mails dans le lien ci-dessus.
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.
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));