Dans une application Symfony, ce n’est pas rare d’avoir besoin d’envoyer des mails. Dans cet article, je vais vous montrer l’envoi de mail avec un nouvel composant Symfony : Mailer.
Installation
Pour installer Mailer, on va utiliser la célèbre commande composer :
composer require symfony/mailer
Configuration
Rien à configurer pour l’instant.
Utilisation
Lors de l’installation du composant Mailer, celui ci comporte deux classes :
- SMTPTransport ( Uniquement pour ceux qui veulent lié à Messenger de Symfony )
- Mailer ( Comme SwiftMailer c’est lui qui envoi votre email ).
Pour notre exemple, on utilisera le smtp Gmail comme pour l’article avec Swiftmailer.
A Savoir, pour les emails avec Swiftmailer on utilisait directement Swift_Message. Pour Mailer, on va utiliser un nouveau composant Mime.
Mime Component
MIME (Multipurpose Internet Mail Extension) est une norme qui étend le format de base des emails, pour rajouter du contenu complexe par exemple
- Pièces jointes non textuels comme des images, vidéos, gif.
- Injecter directement de Html dans le corps.
- etc.
Installation
composer require symfony/mime
Avec ce package on va pouvoir créer un objet Email.
Exemple
Dans un premier temps, on va créer notre email !
Comme pour SwiftMailer, nous allons devoir crée une variables dans notre .env qui seront nos informations de connexion sur le smtp de Gmail.
// .env // SMTP Configuration with Gmail MAILER_DSN=smtp://test42:PASSWORD@gmail
Pour créer un mot de passe d’application avec Gmail cliquez ici
Pour la liste des autres DSN cliquez ici
Maintenant on va envoyer un mail via une commande Symfony (Lien vers l’article).
Maintenant vous avez compris le nouveau système d’envoi de mail de Symfony : Mailer
Merci pour ce tuto
Bonjour je l’ai tester mais ça ne marche pas !
J’ai ceci comme message d’erreur :
Connection could not be established with host “ssl://gmail:465”: stream_socket_client(): php_network_getaddresses: getaddrinfo failed: Name or service not known.
J’ai trouvé la solution !
Le problème provient de mon MAILER_DSN
‘MAILER_DSN’ => ‘gmail+smtp://USERNAME:PASSWORD_APPLICATION@default’,
Et n’oublié pas d’installer google-mailer avec
composer require symfony/google-mailer
Merci pour ton retour, je vais faire une vérification et modifier si nécessaire.