Notifications Laravel pour des emails simplifiés

Si vous envisagez d’envoyer des emails via Laravel, vous tomberez certainement sur des informations concernant Laravel Mail. Et pour cause : c’est une solution puissante pour l’envoi d’emails. Toutefois, notre expérience a révélé une méthode encore plus simple : les Notifications Laravel.

Elles ne sont pas seulement faciles à utiliser, mais elles contribuent également à harmoniser les communications sortantes de votre système. À mon sens, il est regrettable que les notifications Laravel ne soient pas davantage mises en lumière. Pourquoi opter pour les notifications ? Explorons ensemble leurs avantages.

Qu’est-ce qu’une notification ?

Pour rester simple, les notifications sont des messages de base.

Nous créons typiquement une notification pour chaque type de message qui peut être produit par un système (ex : UserRegistered, InvoicePaid, etc.).

Pourquoi utiliser les notifications Laravel ?

Au-delà de leur simplicité, il y a un certain nombre de raisons de considérer l’utilisation des notifications lorsque vous avez besoin d’envoyer un email, y compris :

Conceptions basées sur des modèles

Votre déploiement Laravel dispose déjà de modèles intégrés pour les notifications de email.

Ces modèles devraient couvrir à la fois les email HTML et ceux en texte brut, et ils ont l’air bien sans aucune modification. J’ai visualisé certaines de ces notifications de base sur un certain nombre de clients de messagerie différents, et j’ai été impressionné par l’ensemble.

Si vous utilisez des modèles standard, vous n’avez pas besoin de créer un nouveau fichier pour représenter la vue de votre courrier électronique. Il vous suffit d’invoquer les fonctions qui déterminent l’objet et le contenu de votre message. Vous pouvez également personnaliser le style de ces modèles.

Si vous avez besoin de quelque chose de plus sophistiqué que la simple spécification d’une ligne d’objet, du texte du corps et d’un bouton d’action, ces notifications de email peuvent être développées via Markdown. Le langage Markdown disponible est assez complet et fournit des composants permettant de gérer des tâches plus avancées, comme l’affichage d’un tableau.

Normalisation des communications

Bien que cet article soit principalement axé sur l’utilisation des notifications pour l’envoi de courriels, il convient de souligner que les notifications peuvent également servir à d’autres fins. Elles peuvent envoyer des SMS par l’intermédiaire de Vonage ou Twilio, envoyer des notifications dans Slack et avoir diverses autres utilisations. En fait, vous pouvez créer votre propre canal de notification ou utiliser ceux que d’autres membres de la communauté ont créés sur le site Web Laravel Notification Channels.

À mon humble avis, les notifications sont d’autant plus utiles.

Une fois que votre projet commence à utiliser les notifications, il peut standardiser la façon dont toutes les communications du système sont gérées.

Mise en file d’attente

Les notifications Laravel s’intègrent parfaitement avec le système de mise en file d’attente de Laravel Queues, améliorant ainsi significativement l’expérience utilisateur de votre site. Grâce à cette fonctionnalité, vos utilisateurs n’ont pas besoin d’attendre la fin d’un processus pour continuer leur navigation.

Prenons un exemple : les administrateurs souhaitant être informés de chaque nouvelle inscription sur leur site. Imaginons que vous soyez un nouvel utilisateur s’inscrivant sur ce site. Idéalement, vous ne devriez pas attendre que les notifications par email à l’administrateur soient complètement envoyées avant de pouvoir vous connecter. En mettant ces emails de notification en file d’attente, ils sont expédiés dès que possible, sans retarder votre accès.

Centralisation et Traçabilité des Communications

Ce point coïncide avec le thème de la normalisation des communications. Tirant parti du fait que les notifications peuvent être envoyées à de nombreux canaux différents, il existe un canal de notification permettant d’écrire des notifications dans la base de données. Cela peut s’avérer utile si les utilisateurs de votre système ont besoin de savoir quelles communications ont été envoyées. Cette fonctionnalité permet également de renvoyer ces notifications.

Comment utiliser les notifications Laravel

Bien que l’étendue de ce sujet puisse couvrir pas mal de choses, je veux illustrer à quel point ces notifications peuvent être simples, donc je n’irai pas trop en profondeur.

Créer une nouvelle notification

En exécutant la commande suivante à partir de votre ligne de commande (dans le contexte de votre répertoire de projet)

php artisan make:notification YourNotificationName -m

créera un nouveau fichier ’VotreNomDeNotification.php’ dans ’app/Notifications’ qui contiendra tout l’échafaudage de base pour vous.

La structure de ce fichier est relativement simple ; elle comprend deux types de fonctions principales. L’une de ces fonctions s’appelle ’via’, et les autres sont nommées en fonction de leur type de canal de notification.

La fonction ’via’ renvoie un tableau de tous les canaux de notification dans lesquels votre notification sera envoyée. Vous pouvez vous contenter d’une notification simple :

return ['mail'];

Ou peut-être voulez-vous que votre notification soit envoyée par courrier et enregistrée dans la base de données :

return ['mail','database'];

Quel que soit le canal choisi, il doit avoir une fonction ’to’ correspondante.
Par exemple, si je veux envoyer cette notification particulière par courrier électronique, j’ai besoin d’une fonction ’toMail’ :

public function toMail($notifiable) { return (new MailMessage) ->subject('Subject of the Email') ->line('The introduction to the notification.') ->action('Notification Action', url('/')) ; }

Notification via Email avec Laravel

Laravel inclut un trait ‘notifiable’ qui est souvent déjà intégré dans votre table ‘users’.
Si tel est le cas, Laravel peut automatiquement consulter cette table pour y trouver le champ ’email’, permettant ainsi de contacter l’utilisateur par email.

À condition que l’utilisateur possède une adresse email et que votre système soit configuré pour l’envoi d’emails, adresser un email à cet utilisateur devient un processus remarquablement simple :

$user->notify((new YourNotificationName())

Personnalisation des modèles

Si vous souhaitez modifier l’aspect des notifications par courriel en HTML/texte brut, il vous suffit de publier les ressources correspondantes :

php artisan vendor:publish --tag=laravel-notifications

L’exécution de cette commande exposera les modèles dans votre répertoire ‘resources/views/vendor/notifications’.

Conclusion : l’élégance de la simplicité avec Laravel

Si, comme moi, vous privilégiez la concision et l’efficacité dans vos emails (et autres formes de notifications), les capacités offertes par les notifications de Laravel devraient largement répondre à vos besoins. Je vous encourage vivement à les expérimenter, étant donné leur simplicité d’utilisation. C’est l’occasion parfaite de mettre en lumière cette fonctionnalité souvent sous-estimée de Laravel.