ssddanbrown / symfony-mailer
帮助发送电子邮件
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
注意:这是一个(希望是暂时的)分支symfony/mailer,用于在BookStack中使用TLS保证。不建议在其他项目中使用此库分支。它仅包含/修补了BookStack使用的单个分支。
Mailer组件帮助发送电子邮件。
入门指南
$ 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('[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);
要启用Mailer的Twig集成,需要require symfony/twig-bridge
并设置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);