Aller au contenu

Programmation PHP avec Symfony/Mailer

Un livre de Wikilivres.

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

Pour l'installer[1] :

Terminal
Logo
composer require symfony/mailer


Ajouter ensuite le SMTP dans le .env :

MAILER_DSN=smtp://mon_utilisateur:mon_mot_de_passe@smtp.example.com
    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);
    }


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.

Terminal
Logo
composer require symfony/swiftmailer-bundle


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.

Pour simplifier les templates d'email, une alternative au HTML / CSS existe, il s'agit de Inky[4].

Elle utilise d'autres balises XML, comme callout ou spacer[5].

Installation :

composer require twig/extra-bundle twig/inky-extra

Utilisation :

{% apply inky_to_html %}
...