Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Comment utiliser SwiftMailer dans votre application web

Par Kokou Normand AGBOVI Publié le 24/11/2019 à 17:03:27 Noter cet article:
(0 votes)
En attente de relecture par le comité de lecture

Introduction

De nos jours la plus part des sites web regorge de possibilité de d'envoie de mail et de newsletters.

Je vais, dans cet article, présenter un outil open source et facile d'utilisation, vous permettant d'intégrer à votre site web un serveur d'envoie de mail.

Installation

Il existe pleins d'outils permettant d'envoyer des mails à travers un site web. Celui que j'aurai à présenter se nomme SwiftMailer.

SwiftMailer est un plugin web permettant d'envoyer des mails à l'aide de votre serveur smtp. Je vais montrer comment l'utiliser dans une simple application web faite avec le framework symfony.

Avant de commencer vous devez avoir ces prérequis.

Prérequis:

- Avoir une application php faite en symfony

- Un serveur smtp (si vous n'en avez pas, utilisez celui de gmail si vous avez un compte gmail)

- Un serveur Apache actif

- php activé sur votre ordinateur

Nous allons tout d'abord procéder à l'installation du plugin SwiftMailer sur une application symfony.

Pour le faire il faut exécuter la commande ci-après dans votre invite de commande, après vous être positionné dans le dossier principal de votre application web:

php composer require "swiftmailer/swiftmailer:^6.0"

Cette commande installera la version 6 (dernière version) dans votre application.

Configuration

Après l'installation vous devez rajouter ce code dans votre fichier config.yml.

Vous devez également spécifier les informations de connexion de votre serveur smtp dans le fichier parameters.yml.

Dans mon cas, j'ai mis comme serveur, le lien smtp de gmail.

Utilisation

Pour tester l'envoie de mail, il faudra exécuter dans votre invite de commande la commande ci-dessous :

php bin/console swiftmailer:email:send

L'invite de commande vous demandera d'entrer l'adresse mail de celui qui envoie le mail.

Vous l'entrez et vous appuyez sur entrer. Ensuite il vous sera demandé l'adresse mail du destinataire.

Vous l'entrez et vous valider. Il faudra ensuite taper l'objet du mail à envoyer.

Et après il faudra taper le corps du mail.

Ensuite Appuyez sur entrer et le serveur s'occupera de l'envoie du mail

Vous pourrez donc vérifier si votre destinataire a reçu le mail envoyé.

NB: si vous utilisez un seveur smtp 'gmail', assurez vous que le l'option 'Less secure app access' est bien activé sur le compte gmail que vous renseignez dans le fichier parameters.yml.

Ensuite pour tester l'envoie de mail sur votre application, il faudra utiliser au niveau de votre contrôleur symfony la fonction new \Swift_Message().

Exemple d'utilisation : Ce code enverra directement le mail à l'adresse mail souhaitée une fois que la méthode dans laquelle vous l'avez écrite sera exécutée.

Il faudra renseigner les parties cachées sur l'image. le fichier inscription.html.twig doit respecter un format html et doit être placer dans le dossier resources.

Dans mon cas j'ai créé un dossier 'emails' dans le dossier 'resources' et j'y ai mis le fichier inscription.html.twig. C'est pour cela que j'ai précisé 'emails/inscription.html.twig'.

Les variables 'nom', 'prenom' et 'email' représente des paramètres qui sont utilisé sur la page inscription.html.twig conformément à la norme twig-symfony.

Vous pourrez donc tester ce code pour pouvoir envoyer des mails personnalisés à partir de votre site web codé en symfony.

Conclusion

Dans cet article nous avons vu comment intégrer un système d'envoie de mail dans une application web faite en symfony.

Cette technique est également utilisable sur d'autres applications web codées en php.

L'objectif premier est d'avoir le fichier composer.json dans votre dossier.

Composer se chargera d'installer la version de SwiftMailer que vous lui indiquez dans votre application codée en php.

Sources

https://swiftmailer.symfony.com/docs/introduction.html

https://symfony.com/doc/current/email.html

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels