-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Mailer.php
34 lines (27 loc) · 926 Bytes
/
Mailer.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
declare(strict_types=1);
namespace SonsOfPHP\Component\Mailer;
use SonsOfPHP\Contract\Mailer\MailerInterface;
use SonsOfPHP\Contract\Mailer\MessageInterface;
use SonsOfPHP\Contract\Mailer\MiddlewareHandlerInterface;
use SonsOfPHP\Contract\Mailer\MiddlewareInterface;
use SonsOfPHP\Contract\Mailer\TransportInterface;
/**
* @author Joshua Estes <joshua@sonsofphp.com>
*/
final readonly class Mailer implements MailerInterface
{
public function __construct(
private TransportInterface $transport,
private MiddlewareHandlerInterface $handler = new MiddlewareHandler(),
) {}
public function addMiddleware(MiddlewareInterface $middleware): void
{
$this->handler->getMiddlewareStack()->add($middleware);
}
public function send(MessageInterface $message): void
{
$message = $this->handler->handle($message);
$this->transport->send($message);
}
}