envoi des mails avec laravel

Guide complet sur l’envoi des mails avec Laravel

Temps de lecture: 6 minutes

L’envoi de courriels dans des applications Web est devenu essentiel. Le marketing, les notifications, les newsletters, les publicités, etc. sont quelques-unes des raisons pour lesquelles nous envoyons des courriels à nos clients. Je dirais que la majorité des sites Web envoient des courriels automatisés au moins via un formulaire « Contactez-nous ».

Explorons les nombreuses manières possibles d’envoyer des courriels dans une application Laravel.

Choisir un fournisseur de service de messagerie

Vous vous demandez peut-être pourquoi vous devez faire appel à un service alors que vous pouvez simplement vous lancer dans le hardcore avec SMTP. L’ancienne méthode fonctionne bien, sans doute, mais si vous voulez vraiment quelque chose d’impressionnant, robuste, évolutif et économique , alors un fournisseur de services est meilleur car il fait tous les travaux difficiles et vous donne juste un point final auquel votre programme peut parler,

Nous allons examiner plusieurs fournisseurs possibles et comment les configurer dans une application Laravel. En parlant de cela, installez une nouvelle application Laravel et laissez le fichier config/services.phpouvert dans votre éditeur de code préféré.

Mailgun

  1. Inscrivez-vous pour un compte si vous ne l’avez pas.
  2. Vérifiez votre email et votre numéro de téléphone.
  3. Vous serez redirigé vers votre tableau de bord.
  4. Localisez votre clé API et votre domaine

Mailtrap

Mailtrap est génial pour le développement et les tests. Il n’a pas été conçu pour envoyer des courriels lors de la production.

  1. Inscrivez-vous via https://mailtrap.io/register/signup
  2. Vérifiez votre compte si nécessaire
  3. Accédez à vos boîtes de réception via https://mailtrap.io/inboxes
  4. Stocker les informations d’identification SMTP dans un endroit sûr

Mandrill

  1. S’inscrire
  2. Configurer un nom de domaine
  3. Aller aux paramètres du menu de gauche
  4. Cliquez sur Ajouter une clé API
  5. Ajouter l’option Mandrill dans le
    fichier  config/services.php


		


Il existe plusieurs autres options, y compris Amazon SES, mais nous allons nous concentrer seulement sur quelques-unes. Ils ont des configurations similaires, alors restons-en à apprendre avec ce que nous avons.

Configurer nos services

Notre config/services.phpdispose de toutes les configurations pour les principaux services externes nécessaires à notre application. Il est également recommandé que si Laravel ne fournit aucun service, vous devez vous en tenir au modèle de conception consistant à utiliser le
fichier config  services pour configurer votre application.



		


Notez que Mailtrap est manquant ici. Il utilise SMTP et est fourni par défaut dans chaque installation Laravel car il est conçu à des fins de test.

Une pratique vraiment désapprouvée est de stocker les informations d’identification dans des codes car elles peuvent fuir entre de mauvaises mains, notamment lors du déplacement d’une base de code dans un VCS. Pour cette raison, Laravel utilise un
fichier  .env pour stocker ses informations d’identification et ses variables d’environnement:



		


Vous pouvez remplacer les noms d’utilisateur, mots de passe, clés, domaines et secrets que vous avez obtenus lors de votre inscription aux services de messagerie.

Définir une option par défaut

Comme je l’ai déjà mentionné, nous ne pouvons pas utiliser tous les services en même temps. Dans ce cas, même après avoir configuré plusieurs fournisseurs, nous devons toujours indiquer à Laravel lequel utiliser:



		


Envoyer des emails

Configurer les services n’envoie pas réellement les courriels, mais c’est une étape incroyable que nous avons franchie ensemble. Nous pouvons faire mieux. Envoyez maintenant un email.

Une approche de base

Nous allons utiliser l’approche RESTful pour envoyer les emails car c’est la norme. Alors, préparez votre postman à faire quelques travaux.

Nous n’avons pas besoin d’un modèle ou d’une vue avec la direction que nous prenons. Au lieu de cela, nous avons juste besoin d’un contrôleur et d’une route. Créez un contrôleur nommé EmailController:



		


Maintenant, ajoutez une route simple à routes/web.php:



		


Notre route pointe vers le contrôleur que nous avons créé et demande la
méthode d’action  send pour traiter la demande. Continuons et créons la
méthode d’action  send:

Remarque: Les méthodes d’action sont des méthodes d’un contrôleur qui gèrent une demande.



		


C’est une méthode de base qui attend et qui est prête à être concrétisée. Nous avons également indiqué Requestsi nous avons besoin de quoi que ce soit avec l’objet request.

Pour envoyer des emails HTML, nous devons créer un modèle pour cela. Créez un fichier send.blade.phpdans resources/views/emailsavec les éléments suivants:



		


Retour à la méthode d’action. Il est temps d’ajouter la logique d’envoi de courrier qui peut être réalisée à l’aide de la
façade  Mail:



		


La façade Mail qui est utilisée pour gérer les emails dans Laravel fournit plusieurs méthodes, notamment send(). La méthode send() prend 3 paramètres: une vue, des données à lier à la vue et une fermeture. Vous pouvez configurer le courrier comme vous le souhaitez dans la fermeture.

Rendez-vous à Postman et faites une demande de publication /sendavec titleet contentcomme indiqué ci-dessous:

Ci-dessous, une image de ce courrier qui arrive dans Mailtrap.

Nous pouvons configurer toutes les propriétés d’un email directement dans la fermeture. Voici des options disponibles:



		


Expérimentons une autre des fonctionnalités qui est $message->attach()

Joindre des fichiers

Joindre des fichiers est très simple. Nous utilisons simplement la méthode  attach() et fournissons un chemin de fichier.



		


Nous avons demandé à télécharger un fichier via un formulaire et à le joindre au courrier. Notez que nous avons également ajouté un objet à l’e-mail.

Optimiser avec les files d’attente

Vous pouvez maintenant utiliser les files d’attente pour optimiser l’envoi d’emails. C’est simple comme bonjour. Au lieu d’envoyer avec la méthode  send(), nous envoyons avec la méthode queue():



		


Rappelez-vous que nous devons exécuter la commande listen sur les files d’attente avant de pouvoir les distribuer:



		


En production, il est déconseillé d’utiliser listenen raison de la forte utilisation de son processeur. Il est préférable d’utiliser worket de passer l’option –daemon:



		


Bonus: notifications par e-mail en masse avec MailChimp

Comme cet article traite de l’envoi d’e-mails, il serait bon d’envisager d’envoyer des e-mails en masse. Mailchimp est l’outil le plus populaire pour gérer ce problème. Essayons-le.

Configurer MailChimp

Configurer Mailchimp implique deux étapes: la création du compte et la configuration du projet Laravel. Pour créer un compte MailChimp, rdv sur la page d’inscription, inscrivez – vous et vérifiez votre compte si nécessaire.

Créez ensuite une liste de vos abonnés. Dans un projet réel, vous ajouteriez des utilisateurs à la liste de manière programmée à l’aide de l’API, mais nous pouvons simplement aller de l’avant et en créer certains via le tableau de bord, comme indiqué ci-dessous.

Maintenant, prenez l’identifiant de la liste en allant dans Paramètres> Nom de la liste et valeurs par défaut. Créez également et obtenez votre clé API à partir de Utilisateur> Comptes> Extras> Clés API. « Utilisateur » représente votre nom d’utilisateur, qui se trouve dans la barre de navigation.

Retournez dans le projet Laravel et stockez la clé et l’identifiant dans le fichier .env:



		


Extrayez ensuite le SDK PHP de Mandrill du composeur:



		


Envoi de campagnes

Les e-mails en masse de Mailchimp sont identifiés comme des campagnes. Laissez-nous créer une autre méthode d’action simple pour gérer l’envoi de messages en masse à notre liste d’abonnés:



		


Nous utilisons deux méthodes de campagne: create()et send(). La méthode  create() provisionne une campagne et retourne un tableau contenant les éléments idde notre campagne. Nous passons ensuite idà la méthode send() pour envoyer les emails. C’est tout!

Allez-y et ajoutez la route supplémentaire:



		


Conclusion

Et voilà, j’espère que ça vous aidera. Cliquez ici pour plus de tutos en Laravel.

  • Merci d’avoir lu !  Si vous avez aimé cet article,
  • Faites un coucou sur : Instagram | Facebook | Twitter |
  • Avez-vous besoin d’aide pour votre projet web ? Ecrivez moi à l’adresse suivante : david@oschool.ci
Deviens toi aussi développeur web !
I agree to have my personal information transfered to MailChimp ( more information )
Commences ta carrière de développeur web, GRATUITEMENT, ici et maintenant !
Je hais les sapms. Votre adresse email ne sera jamais vendu ou partagé avec un tiers

Also published on Medium.

Partages à tous tes amis !

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.