diff --git a/src/Mailer/Drivers/DriverInterface.php b/src/Mailer/Drivers/DriverInterface.php new file mode 100644 index 0000000..eff1903 --- /dev/null +++ b/src/Mailer/Drivers/DriverInterface.php @@ -0,0 +1,12 @@ +getTo()} + Subject: {$message->getSubject()} + Body: + {$this->formatBodyForLog($message->getBody())} + =============================================== + `; + + Logger::info($logMessage); + + return true; + } + + private function formatBodyForLog(string $body): string + { + $body = str_replace('
', "\n", $body); + $body = str_replace('
', "\n", $body); + $body = strip_tags($body); + + return wordwrap($body, 80); + } +} diff --git a/src/Mailer/Message.php b/src/Mailer/Message.php new file mode 100644 index 0000000..254c6dc --- /dev/null +++ b/src/Mailer/Message.php @@ -0,0 +1,33 @@ +to; + } + + public function getSubject(): string + { + return $this->subject; + } + + public function getBody(): string + { + return $this->body; + } +} diff --git a/src/Mailer/Sendmail.php b/src/Mailer/Sendmail.php new file mode 100644 index 0000000..a7f5c69 --- /dev/null +++ b/src/Mailer/Sendmail.php @@ -0,0 +1,25 @@ +driver = match (Config::get('mailer.driver')) { + 'log' => new Drivers\Log(), + default => throw new \InvalidArgumentException('Invalid mailer driver specified.'), + }; + } + + public function send(Message $message): bool + { + return $this->driver->send($message); + } +} diff --git a/src/Mailer/Templates/_base.twig b/src/Mailer/Templates/_base.twig new file mode 100644 index 0000000..9414e7a --- /dev/null +++ b/src/Mailer/Templates/_base.twig @@ -0,0 +1,24 @@ + + + + + {{ subject }} + + + + {{ content|raw }} + + \ No newline at end of file diff --git a/src/Mailer/Templates/password-reset.twig b/src/Mailer/Templates/password-reset.twig new file mode 100644 index 0000000..be36d71 --- /dev/null +++ b/src/Mailer/Templates/password-reset.twig @@ -0,0 +1,17 @@ +{% extends _base.twig %} + +{% block subject %} + Password Reset Request +{% endblock %} + +{% block body %} +

Dear {{ user.firstName }},

+ +

We received a request to reset your password. Click the link below to set a new password:

+ +

Reset Your Password

+ +

If you did not request a password reset, please ignore this email.

+ +

Best regards,
{{ client.name }}

+{% endblock %} \ No newline at end of file