wiki-grav/plugins/email/vendor/symfony/mailer
2024-05-17 20:26:01 +02:00
..
DataCollector (Grav GitSync) Automatic Commit from exu 2024-05-17 20:26:01 +02:00
Event (Grav GitSync) Automatic Commit from exu 2024-05-17 20:26:01 +02:00
EventListener (Grav GitSync) Automatic Commit from exu 2024-05-17 20:26:01 +02:00
Exception (Grav GitSync) Automatic Commit from exu 2024-05-17 20:26:01 +02:00
Header (Grav GitSync) Automatic Commit from RealStickman 2023-05-12 15:06:01 +02:00
Messenger (Grav GitSync) Automatic Commit from exu 2024-05-17 20:26:01 +02:00
Test (Grav GitSync) Automatic Commit from exu 2024-05-17 20:26:01 +02:00
Transport (Grav GitSync) Automatic Commit from exu 2024-05-17 20:26:01 +02:00
CHANGELOG.md (Grav GitSync) Automatic Commit from exu 2024-05-17 20:26:01 +02:00
composer.json (Grav GitSync) Automatic Commit from exu 2024-05-17 20:26:01 +02:00
DelayedEnvelope.php (Grav GitSync) Automatic Commit from RealStickman 2023-05-12 15:06:01 +02:00
Envelope.php (Grav GitSync) Automatic Commit from RealStickman 2023-05-12 15:06:01 +02:00
LICENSE (Grav GitSync) Automatic Commit from exu 2024-05-17 20:26:01 +02:00
Mailer.php (Grav GitSync) Automatic Commit from exu 2024-05-17 20:26:01 +02:00
MailerInterface.php (Grav GitSync) Automatic Commit from exu 2024-05-17 20:26:01 +02:00
README.md (Grav GitSync) Automatic Commit from RealStickman 2023-05-12 15:06:01 +02:00
SentMessage.php (Grav GitSync) Automatic Commit from RealStickman 2023-05-12 15:06:01 +02:00
Transport.php (Grav GitSync) Automatic Commit from exu 2024-05-17 20:26:01 +02:00

Mailer Component

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 \DateTime('+7 days'),
        'username' => 'foo',
    ])
;
$mailer->send($email);

Resources