From e6af6a052ed122ebb3e635a02761c6136b8f0c10 Mon Sep 17 00:00:00 2001 From: Kartik Jolapara Date: Sat, 25 Jul 2026 13:05:05 +0530 Subject: [PATCH] feat: add Netcore Email adapter --- .../Messaging/Adapter/Email/Netcore.php | 64 +++++++++++++++++++ tests/e2e/Email/NetcoreTest.php | 25 ++++++++ 2 files changed, 89 insertions(+) create mode 100644 src/Utopia/Messaging/Adapter/Email/Netcore.php create mode 100644 tests/e2e/Email/NetcoreTest.php diff --git a/src/Utopia/Messaging/Adapter/Email/Netcore.php b/src/Utopia/Messaging/Adapter/Email/Netcore.php new file mode 100644 index 00000000..dec88aaf --- /dev/null +++ b/src/Utopia/Messaging/Adapter/Email/Netcore.php @@ -0,0 +1,64 @@ +isEU ? $euDomain : $usDomain; + + $response = new Response($this->getType()); + $result = $this->request( + method: 'POST', + url: "https://$domain/v5.1/mail/send", + headers: [ + 'apiKey: ' . \base64_encode('api:' . $this->apiKey), + 'Accept: application/json', + 'Content-Type: application/json', + ], + body: [ + 'to' => \implode(',', $message->getTo()), + 'from' => $message->getFrom(), + 'subject' => $message->getSubject(), + 'content' => [ + 'type' => $message->isHtml() ? 'html' : 'amp', + 'value' => $message->getContent(), + ], + ], + ); + + if ($result['statusCode'] >= 200 && $result['statusCode'] < 300) { + $response->addResult(\implode(',', $message->getTo())); + } else { + $error = $result['response']['error'] ?? $result['error'] ?? 'Unknown error'; + $response->addResult(\implode(',', $message->getTo()), $error); + } + + return $response->toArray(); + } +} diff --git a/tests/e2e/Email/NetcoreTest.php b/tests/e2e/Email/NetcoreTest.php new file mode 100644 index 00000000..626b391d --- /dev/null +++ b/tests/e2e/Email/NetcoreTest.php @@ -0,0 +1,25 @@ +send($message); + + $this->assertResponse($response); + } +}