Programmation PHP avec Symfony/Mailer
Mailer
modifierDepuis 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
Utilisation
modifier 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 Mailer
modifierAvant 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.
Installation
modifierTerminal
composer require symfony/swiftmailer-bundle
Utilisation
modifierPar 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.
Templates
modifierPour 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 %} ...