ssddanbrown / symfony-mailer
Helps sending emails
6.4.x-dev
2024-03-17 16:25 UTC
Requires
- php: >=8.1
- egulias/email-validator: ^2.1.10|^3|^4
- psr/event-dispatcher: ^1
- psr/log: ^1|^2|^3
- symfony/event-dispatcher: ^5.4|^6.0|^7.0
- symfony/mime: ^6.2|^7.0
- symfony/service-contracts: ^2.5|^3
Requires (Dev)
- symfony/console: ^5.4|^6.0|^7.0
- symfony/http-client: ^5.4|^6.0|^7.0
- symfony/messenger: ^6.2|^7.0
- symfony/twig-bridge: ^6.2|^7.0
Conflicts
- symfony/http-client-contracts: <2.5
- symfony/http-kernel: <5.4
- symfony/messenger: <6.2
- symfony/mime: <6.2
- symfony/twig-bridge: <6.2.1
Replaces
- symfony/mailer: ^6.0
README
Note: This is a (hopefully temporary) fork of symfony/mailer to patch in TLS assurance for use in BookStack. It's not advised to use this library fork for other projects. It only contains/patches the single branch used by BookStack.
The Mailer component helps sending emails.
Getting Started
$ composer require symfony/mailer
use Symfony\Component\Mailer\Transport; use Symfony\Component\Mailer\Mailer; use Symfony\Component\Mime\Email; $transport = Transport::fromDsn('smtp://localhost'); $mailer = new Mailer($transport); $email = (new Email()) ->from('hello@example.com') ->to('you@example.com') //->cc('cc@example.com') //->bcc('bcc@example.com') //->replyTo('fabien@example.com') //->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 Symfony\Bridge\Twig\Mime\BodyRenderer; use Symfony\Bridge\Twig\Mime\TemplatedEmail; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\Mailer\EventListener\MessageListener; use Symfony\Component\Mailer\Mailer; use Symfony\Component\Mailer\Transport; use Twig\Environment 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);