Programmation PHP/Symfony/Mailer

MailerModifier

Depuis Symfony 4.3, un composant Symfony Mailer a été ajouté.

Pour l'installer[1] :

Terminal
 
composer require symfony/mailer


Ajouter ensuite le SMTP dans le .env :

MAILER_DSN=smtp://mon_utilisateur:mon_mot_de_passe@smtp.example.com

UtilisationModifier

    private MailerInterface $mailer;

    public function __construct(MailerInterface $mailer)
    {
        $this->mailer = $mailer;
    }

    public function send(string $message): void
    {
        $email = (new Email())
            ->from('no-reply@example.com')
            ->to('target@example.com')
            ->subject('Test Symfony Mailer')
            ->text($message)
        ;

        $this->mailer->send($email);
    }


Swift MailerModifier

Avant Symfony 4.3 et la création du composant Mailer[2], on pouvait utiliser Swift Mailer.

Swift Mailer est ensuite remplacé en novembre 2021 par le composant Mailer.

InstallationModifier

Terminal
 
composer require symfony/swiftmailer-bundle


UtilisationModifier

Par exemple, pour un envoi d'email sans passer par config.yml :

        $transport = (new \Swift_SmtpTransport('mon_smtp.com', 25));
        $mailer = new \Swift_Mailer($transport);
        $message = (new \Swift_Message('Hello World from Controller'))
            ->setFrom('mon_email@example.com')
            ->setTo('mailcatcher@example.com')
            ->setBody('Hello World',
                'text/html'
            )
        ;
        $mailer->send($message);
 il existe des applications comme Mailcatcher[3] pour intercepter les emails envoyés en environnement de développement, et les lire dans une interface graphique.

RéférencesModifier