diff --git a/docker-compose.yml b/docker-compose.yml index 80d626d9..e4806687 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,6 +6,7 @@ services: - MAILGUN_API_KEY - MAILGUN_DOMAIN - SENDGRID_API_KEY + - ELASTICEMAIL_API_KEY - FCM_SERVER_KEY - FCM_SERVER_TO - TWILIO_ACCOUNT_SID @@ -44,4 +45,4 @@ services: request-catcher: image: appwrite/requestcatcher:1.0.0 ports: - - '10001:5000' \ No newline at end of file + - '10001:5000' diff --git a/src/Utopia/Messaging/Adapters/Email/ElasticEmail.php b/src/Utopia/Messaging/Adapters/Email/ElasticEmail.php new file mode 100644 index 00000000..36f41701 --- /dev/null +++ b/src/Utopia/Messaging/Adapters/Email/ElasticEmail.php @@ -0,0 +1,71 @@ +request( + method: 'POST', + url: "https://$domain/v4/{$this->domain}/send", + headers: [ + 'Authorization: Basic '.base64_encode('api:'.$this->apiKey), + ], + body: http_build_query([ + 'apiKey' => $this->apiKey, + 'from' => $message->getFrom(), + 'fromName' => $message->getFromName(), + 'subject' => $message->getSubject(), + 'bodyHtml' => $message->isHtml() ? $message->getContent() : null, + 'bodyText' => $message->isHtml() ? null : $message->getContent(), + 'to' => implode(',', $message->getTo()), ]), + ); + + return $response; + } +} diff --git a/tests/e2e/Email/ElasticEmailTest.php b/tests/e2e/Email/ElasticEmailTest.php new file mode 100644 index 00000000..76e79bef --- /dev/null +++ b/tests/e2e/Email/ElasticEmailTest.php @@ -0,0 +1,40 @@ +send($message)); + + $this->assertArrayHasKey('transactionId', $result); + $this->assertArrayHasKey('message', $result); + $this->assertTrue(str_contains(strtolower($result['message']), 'queued')); + } +}