Mail asynchrone Symfony 6

Par charlie404, il y a 4 ans


Bonjour à tous,

Je débute sur Symfony, j'ai passé plusieurs jours à tenter d'envoyer des mails sur Symfony 6 avant de comprendre que l'envoie des mails se fessait de manière asynchrone.

Du coup en local, j'execute cette commande pour envoyer des mails :

php bin/console messenger:consume async -vv

Mais je me demande quand même pourquoi l'envoie des mails se fait de manière asynchrone ?
Comment faire pour envoyer des mails ensuite quand mon application sera en ligne sur serveur mutualisé ?
Est-ce qu'il est possible d'envoyer des mails directement juste après l'appel à la fonction $mailer->send($email); ?

Merci d'avance pour vos retours 🙂

4 réponses

gillesr, il y a 4 ans

Bonjour,

l'envoi ne se fait pas obligatoirement de manière asynchrone, tout dépend de ta configuration.
Qu'y a-t-il dans le fichier 'config/packages/mailer.yaml' ?

charlie404, il y a 4 ans

Bonjour Gillesr,

Merci pour ta réponse.

Voici le contenu de mon fichier config/packages/mailer.yaml

framework: mailer: dsn: '%env(MAILER_DSN)%'

C'est la configuration par défaut.

gillesr, il y a 4 ans

Je viens de vérifier sur un nouveau projet et il semble que l'envoi de mail soit par défaut configuré en async.
Pour envoyer les mails en direct, tu peux désactiver ça en commentant la ligne

Symfony\Component\Mailer\Messenger\SendEmailMessage: async

dans le fichier config/packages/messenger.yaml

charlie404, il y a 4 ans

Ah oui tout simplement !

Merci beaucoup 🙂