Symfony6 et Symfony 7 Techwall #52 Les Service Envoi de mail via le bundle Mailer et Gmail

preview_player
Показать описание
Symfony6 et Symfony 7 Techwall #52 Les Service Envoi de mail via le bundle Mailer
Dans ses anciennes versions, Symfony utilise SwiftMailer pour l’envoi d’email.
Si vous n’avez pas le bundle installer le : composer require symfony/swiftmailer-bundle
Si vous utiliser Gmail voici la configuration requise :
SwiftMailer sera dépricated à partir de la version 6 de Symfony, l’alternative est symfony mailer
Si vous n’avez pas le bundle installer le : composer require symfony/mailer
Installer ensuite le mailer que vous voulez utiliser : composer require symfony/google-mailer
Si vous utiliser Gmail voici la configuration requise :
L’injection des services dans les différentes classes de votre projet se fait à travers l’injection de dépendances. En effet, vous êtes entrain de travailler avec un principe très important et qui permet de minimiser les dépendances entre les classes. Ici l’instanciation n’est plus votre soucis. C’est le conteneur de service qui s’occupe de tout.
L’injection de dépendance est un patron de conception qui a vu le jour afin de palier à un problème très récurent : Avoir dans son code des classes qui dépendent les unes des autres. L’injection de dépendance palie à ce problème en découplant les classes.
Avec le conteneur de service de Symfony on peut injecter des services ou des paramètres.
Lorsque vous travaillez avec Symfony, vous aurez besoin d’une même fonctionnalité à plusieurs endroits différents. Vous aurez par exemple besoin d’accéder à votre base de données dans plusieurs contrôleurs.
Un Service est une classe simple qui fournit un « Service ». Vous avez déjà utilisé plusieurs services tel que Doctrine. Elle doit être accessible partout dans votre code.
Dans Symfony tous les services sont géré par le conteneur de service « Symfony container ».

L’un des principes de base sur lequel se base la notion de Service est le principe de Responsabilité unique. Ce principe fait parti des principes SOLID de l’orienté objet. Faite une recherche sur ces concepts. Pour le premier principe de « Single Responsability » il implique que votre code au sein d'une classe ne doit avoir qu'une seule responsabilité.
Prenons l’exemple du service mailer qui se charge de l’envoi de mail, donc un seul type de tâche à effectuer.
Dans le cas ou votre service se charge de 2 tâches différentes, pensez à diviser votre classe en deux services différents.
Les services de Symfony suivent l’architecture Orientées Service
L’utilisation des services et du principe de Single Responsability permet d’avoir un code réutilisable et facilement maintenable.
Un service est une classe associée à une configuration. Si on utilise plusieurs services et qu’on doit tout gérer, l’utilisation des services deviendrait un peu pénible. C’est pour cela que Symfony nous fournit un conteneur de service.
Un conteneur de service est un objet qui a pour rôle de gérer l’ensemble des services de votre application. C’est lui qui vous permettra d’accéder à vos services. Si vous avez besoin d’utiliser un service vous devez passer par le conteneur.
Cependant le rôle du conteneur n’est pas simplement de fournir les services mais aussi de les préparer. En effet, c’est lui qui va préparer l’objet en l’instanciant et en instanciant toutes les classes dont dépend votre service.
Tous les services ne sont pas instanciés à chaque requête. En effet, le conteneur est paresseux il utilise le lazy loading afin d’assurer une plus grande vitesse d’exécution : il n'instancie pas un service avant que vous le demandiez. Par exemple, si vous n'utilisez jamais le service de mailing lors d'une requête, le conteneur ne l'instanciera jamais.
Lors de la demande d’un service S1, le conteneur suit le workflow suivant :
Vérifie si la classe S1 est déjà instancié.
Si oui la fournir
Sinon
Vérifier si le service dépend d’autres classes.
Si oui les instancier ou les récupérer si elles sont instanciées
Instancier le service
L’injection des services dans les différentes classes de votre projet se fait à travers l’injection de dépendances. En effet, vous êtes entrain de travailler avec un principe très important et qui permet de minimiser les dépendances entre les classes. Ici l’instanciation n’est plus votre soucis. C’est le conteneur de service qui s’occupe de tout.
Рекомендации по теме
Комментарии
Автор

Bonjour,
Un grand MERCI pour cette vidéo parfaitement expliquée.

orfeodane
Автор

Gmail ne prend plus en compte les applications tiers moins sécurisées depuis le 30 mai 2022. Y a t-il un autre moyen ou faut-il changer de boîte mail?

reybekadev
Автор

Bonjour, Merci pour le tuto, pourquoi dans un service on ne fait pas de type hinting?

larson
Автор

Bonjour, merci pour le vidéo, je voulais savoir pour "choisir une application" je devrais mettre quoi svp?

insafboulahia
Автор

Bonjour, désolé je tourne en rond depuis 2 heures... j'ai fait et vérifier et revérifier et pourtant les mails ne sont pas envoyés.
En plus, je n'ai aucun message d'erreur. Comment puis-je faire svp?

olivierb
Автор

S'il vous plaît ya t-il une extension PHP qui bloque l'envoie des mails lorsqu'elle n'est pas activée?
Car j'ai tout fais normalement mais j'ai pas de mail

augustekom
Автор

salut svp dans le fiche .env c'est le usename et le password de celui qui envoie ou celui qui recoit

bradarricefeulefack
Автор

Salut. L'option d'autorisation des applications moins sécurisées de Gmail n'est plus disponible. A part ça, il n'y a une autre option ????

amaninyumu
Автор

Bonjour comment faire vu que Google a enlevé le less secure apps ?

johanirenee
Автор

Bonjour, j'aimerai envoyer un mail lors de la création d'un nouvelle utilisateur et non a l'edit comment ça se passe ?

LvcasDeamon
Автор

Bonjour, déjà merci pour cette formation.
Ensuite, en ce qui concerne la nouvel façon d'autoriser les applications tiers, faut-il remplacer le PASSWORD de la ligne :
par le mot de passe d'application que l'on a créé ? si oui, dans le USERNAME, faut-il mettre l'adresse du destinataire ou bien celle de l'expéditeur ?
Merci d'avance pour ta réponse :)

titou
Автор

Salut je ne trouve pas le fichier .env.local dans mon projet

amaninyumu
Автор

comment faire l'encodage, mon mot de passe gmail contient un caractère @, il est dit dans la documentation qu'il faut l'encoder! comment ca se passe ?

bonevybeby
Автор

Solution envoi d'email qui ne fonctionne pas :
Solution a essayer qui mache commenter dans config/pakages/messenger.yaml

routing:
async ==> a commenter avec #
async
async

Ou mieux : lancer la commande : symfony console messenger:consume async
pour permetre l'asynchrone ( apres tout vos message arriverons )

GobetChristophe
Автор

salut merci bc pour le tuto mais en file .env username=? et password=?

haythemrimani
Автор

Salut envoi moi le liens de gmail pour active les apps

libanehassan
Автор

y-a-il une autre méthode d'envoie email, sans utiliser gmail. merci

mounirriahi-nyyz
Автор

il manque beaucoup d'informations dans cette vidéo

tmxzcng