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.
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
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
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',
];
}
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}"
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']);
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');
}
}
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
Dans ce didacticiel, vous avez appris à créer une application de notification par e-mail dans Laravel.