Comment envoyer une notification par e-mail dans Laravel

Une notification d'envoi par e-mail est un e-mail automatisé envoyé pour informer les utilisateurs d'événements ou de mises à jour spécifiques liés à un service, un site Web ou une application. Ils constituent un outil courant pour garder les utilisateurs engagés et informés.

Dans ce tutoriel, nous apprendrons comment envoyer une notification par e-mail dans Laravel. nous créerons une simple notification BirthdayWish et l'enverrons à l'utilisateur le jour de son anniversaire. alors, suivons l'étape suivante pour réaliser cet exemple simple.

Table des matières

  • Étape 1 : Installer Laravel
  • Étape 2 : Créer une migration
  • Étape 3 : Mettre à jour le modèle
  • Étape 4 : Créer une notification
  • Étape 5 : Créer un itinéraire
  • Étape 6 : Créer un contrôleur
  • Étape 7 : Exécutez l’application Laravel

Étape 1 : Installer Laravel

Cette étape n'est pas obligatoire ; cependant, si vous n'avez pas créé l'application Laravel, vous pouvez continuer et exécuter la commande ci-dessous :

composer create-project laravel/laravel example-app

Étape 2 : Créer une migration

Nous allons créer une nouvelle migration pour ajouter une nouvelle colonne de date de naissance dans la table des utilisateurs. alors exécutons la commande ci-dessous :

php artisan make:migration add_birthdate_column

Après cette commande, vous trouverez un fichier dans le chemin suivant "base de données/migrations" et vous devrez mettre le code ci-dessous dans votre fichier de migration pour créer la table des produits.

<?php
  
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
  
return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->date('birthdate')->nullable();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        
    }
};

Vous devez maintenant exécuter cette migration en suivant la commande :

php artisan migrate

Étape 3 : Mettre à jour le modèle

Dans cette étape, nous ajouterons la colonne « date de naissance » dans le tableau $fillable. Assurez-vous d’utiliser le formulaire de classe Notifiable Illuminate\Notifications\Notifiable.

<?php
  
namespace App\Models;
  
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
  
class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;
    
    /**
     * The attributes that are mass assignable.
     *
     * @var array

     */
    protected $fillable = [
        'name',
        'email',
        'password',
        'birthdate'
    ];
   
    /**
     * The attributes that should be hidden for serialization.
     *
     * @var array

     */
    protected $hidden = [
        'password',
        'remember_token',
    ];
  
    /**
     * The attributes that should be cast.
     *
     * @var array

     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

Étape 4 : Créer une notification

Dans cette étape, nous devons créer une "Notification" à l'aide de la commande laravel artisan, exécutons donc la commande ci-dessous, nous créerons la classe de notification BirthdayWish.

php artisan make:notification BirthdayWish

vous pouvez maintenant voir qu'un nouveau dossier sera créé sous le nom "Notifications" dans le dossier de l'application. Vous devez apporter les modifications suivantes comme pour la classe ci-dessous.

<?php
  
namespace App\Notifications;
  
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
  
class BirthdayWish extends Notification
{
    use Queueable;
  
    private $messages;
  
    /**
     * Create a new notification instance.
     */
    public function __construct($messages)
    {
        $this->messages = $messages;
    }
  
    /**
     * Get the notification's delivery channels.
     *
     * @return array

     */
    public function via(object $notifiable): array
    {
        return ['mail'];
    }
  
    /**
     * Get the mail representation of the notification.
     */
    public function toMail(object $notifiable): MailMessage
    {
        return (new MailMessage)
                    ->line($this->messages['hi'])
                    ->line($this->messages['wish'])
                    ->line('Thank you for using our application!');
    }
  
    /**
     * Get the array representation of the notification.
     *
     * @return array

     */
    public function toArray(object $notifiable): array
    {
        return [
              
        ];
    }
}

Ensuite, vous devez ajouter la configuration d'envoi de courrier avec le pilote de messagerie, l'hôte de messagerie, le port de messagerie, le nom d'utilisateur de messagerie, le mot de passe de messagerie afin que Laravel utilise ces configurations d'expéditeur pour envoyer des e-mails. Vous pouvez donc simplement ajouter comme suit.

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=mygoogle@gmail.com
MAIL_PASSWORD=rrnnucvnqlbsl
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=mygoogle@gmail.com
MAIL_FROM_NAME="${APP_NAME}"

Étape 5 : Créer un itinéraire

Dans cette étape, nous devons créer des itinéraires pour envoyer des notifications à un utilisateur. alors ouvrez votre fichier "routes/web.php" et ajoutez l'itinéraire suivant.

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\UserController;
   
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
    
Route::get('user-notify', [UserController::class, 'index']);

Étape 6 : Créer un contrôleur

Ici, nous devons créer un nouveau contrôleur UserController avec la méthode d'index pour envoyer une route de notification. Alors mettons le code ci-dessous.

<?php
   
namespace App\Http\Controllers;
    
use Illuminate\Http\Request;
use App\Models\User;
use App\Notifications\BirthdayWish;
    
class UserController extends Controller
{   
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $user = User::find(1);
  
        $messages["hi"] = "Hey, Happy Birthday {$user->name}";
        $messages["wish"] = "On behalf of the entire company I wish you a very happy birthday and send you my best wishes for much happiness in your life.";
          
        $user->notify(new BirthdayWish($messages));
  
        dd('Done');
    }
}

Étape 7 : Exécutez l'application Laravel :

Toutes les étapes requises ont été effectuées, vous devez maintenant taper la commande ci-dessous et appuyer sur Entrée pour exécuter l'application Laravel :

php artisan serve

Maintenant, accédez à votre navigateur Web, tapez l'URL indiquée et affichez le résultat de l'application :

http://localhost:8000/user-notify

Conclusion

Dans ce didacticiel, vous avez appris à créer une application de notification par e-mail dans Laravel.

1.15 GEEK