mailer
v7.2.0
The Mailer component helps sending emails.
composer require symfony/mailer
use SymfonyComponentMailerTransport;
use SymfonyComponentMailerMailer;
use SymfonyComponentMimeEmail;
$transport = Transport::fromDsn('smtp://localhost');
$mailer = new Mailer($transport);
$email = (new Email())
->from('[email protected]')
->to('[email protected]')
//->cc('[email protected]')
//->bcc('[email protected]')
//->replyTo('[email protected]')
//->priority(Email::PRIORITY_HIGH)
->subject('Time for Symfony Mailer!')
->text('Sending emails is fun again!')
->html('<p>See Twig integration for better HTML integration!</p>');
$mailer->send($email);
To enable the Twig integration of the Mailer, require symfony/twig-bridge
and
set up the BodyRenderer
:
use SymfonyBridgeTwigMimeBodyRenderer;
use SymfonyBridgeTwigMimeTemplatedEmail;
use SymfonyComponentEventDispatcherEventDispatcher;
use SymfonyComponentMailerEventListenerMessageListener;
use SymfonyComponentMailerMailer;
use SymfonyComponentMailerTransport;
use TwigEnvironment as TwigEnvironment;
$twig = new TwigEnvironment(...);
$messageListener = new MessageListener(null, new BodyRenderer($twig));
$eventDispatcher = new EventDispatcher();
$eventDispatcher->addSubscriber($messageListener);
$transport = Transport::fromDsn('smtp://localhost', $eventDispatcher);
$mailer = new Mailer($transport, null, $eventDispatcher);
$email = (new TemplatedEmail())
// ...
->htmlTemplate('emails/signup.html.twig')
->context([
'expiration_date' => new DateTimeImmutable('+7 days'),
'username' => 'foo',
])
;
$mailer->send($email);
The Mailer component for Symfony 7.2 is backed by:
Help Symfony by sponsoring its development!