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 @@
+
+
+
Dear {{ user.firstName }},
+ +We received a request to reset your password. Click the link below to set a new password:
+ + + +If you did not request a password reset, please ignore this email.
+ +Best regards,
{{ client.name }}