From 2897d0ba8931cfb9e8ac792f111c3fe446f22fc5 Mon Sep 17 00:00:00 2001 From: DualFroz Date: Sun, 23 Aug 2026 20:24:21 +0200 Subject: [PATCH] feat(mail): add mailer interface with null and log drivers --- src/Mail/Email.php | 14 ++++++++++++++ src/Mail/LogMailer.php | 38 ++++++++++++++++++++++++++++++++++++++ src/Mail/Mailer.php | 10 ++++++++++ src/Mail/NullMailer.php | 18 ++++++++++++++++++ 4 files changed, 80 insertions(+) create mode 100644 src/Mail/Email.php create mode 100644 src/Mail/LogMailer.php create mode 100644 src/Mail/Mailer.php create mode 100644 src/Mail/NullMailer.php diff --git a/src/Mail/Email.php b/src/Mail/Email.php new file mode 100644 index 0000000..52be34a --- /dev/null +++ b/src/Mail/Email.php @@ -0,0 +1,14 @@ +sent[] = $email; + + $directory = dirname($this->logPath); + if (!is_dir($directory)) { + mkdir($directory, 0775, true); + } + + $entry = sprintf( + "[%s] To: %s | From: %s | Subject: %s\n%s\n%s\n", + gmdate('c'), + $email->to, + $email->from, + $email->subject, + $email->body, + str_repeat('-', 60) + ); + file_put_contents($this->logPath, $entry, FILE_APPEND | LOCK_EX); + } + + public function sent(): array + { + return $this->sent; + } +} diff --git a/src/Mail/Mailer.php b/src/Mail/Mailer.php new file mode 100644 index 0000000..1c7de05 --- /dev/null +++ b/src/Mail/Mailer.php @@ -0,0 +1,10 @@ +sent[] = $email; + } + + public function sent(): array + { + return $this->sent; + } +}