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 %} ...