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); + } +}