Symfony Mailer : envoyer et tester des e-mails
Symfony Mailer construit un e-mail et le confie à un transport choisi par MAILER_DSN : SMTP, un service d'envoi, ou rien du tout en développement.
// L'expéditeur est réglé une fois pour toutes dans config/packages/mailer.yaml (headers: From). $mailer->send((new Email()) ->to($email) ->subject('Votre table au Dragon Ivre') ->text(sprintf('Bonjour %s, votre table vous attend le %s.', $nom, $date->format('d/m/Y')))); // Dans un test fonctionnel : $this->assertEmailCount(1);
Dans le code, on construit un Email (ou un TemplatedEmail rendu par Twig) et on le passe à MailerInterface ; changer de transport ne change rien au code. Ce qui est commun à tous les envois, comme l'expéditeur, se règle une fois dans config/packages/mailer.yaml. Les pièges se trouvent autour de l'envoi : un e-mail qui part au mauvais moment, avant que l'action soit confirmée, ou deux fois quand une commande est relancée. Les tests le vérifient avec des assertions comme assertEmailCount().
Les exercices font envoyer les parchemins de la taverne : une confirmation de réservation, des envois déclenchés par les transitions d'un workflow, puis une commande de rappel qu'on peut relancer sans que personne ne reçoive deux fois le même message.
4 exercices font travailler cette notion, en écrivant du code dans le navigateur.
Dans les parcours
- Le premier parchemin Symfony pour les devs PHP · chapitre 10 : La vie d'une réservation
- Les parchemins du registre Symfony pour les devs PHP · chapitre 10 : La vie d'une réservation
- 🐉 Boss : les parchemins égarés Symfony pour les devs PHP · chapitre 10 : La vie d'une réservation
- La veille au soir Symfony pour les devs PHP · chapitre 12 : Le grand service
Notions voisines
Événements du workflowDébogageWorkflowGardesCommande consoleMigrations