diff --git a/docker-compose.yml b/docker-compose.yml index 80d626d9..6f3790db 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,6 +5,7 @@ services: environment: - MAILGUN_API_KEY - MAILGUN_DOMAIN + - MAILCHIMP_API_KEY - SENDGRID_API_KEY - FCM_SERVER_KEY - FCM_SERVER_TO diff --git a/src/Utopia/Messaging/Adapters/Email/Mailchimp.php b/src/Utopia/Messaging/Adapters/Email/Mailchimp.php new file mode 100644 index 00000000..9d7d6a36 --- /dev/null +++ b/src/Utopia/Messaging/Adapters/Email/Mailchimp.php @@ -0,0 +1,78 @@ +request( + method: 'POST', + url: 'https://mandrillapp.com/api/1.0/messages/send', + headers: [ + 'Content-Type: application/json', + ], + body: \json_encode([ + 'key' => $this->apiKey, + 'message' => [ + 'html' => $message->isHtml() ? $message->getContent() : null, + 'text' => $message->isHtml() ? null : $message->getContent(), + 'subject' => $message->getSubject(), + 'from_email' => $message->getFrom(), + 'to' => \array_map( + fn ($to) => ['email' => $to], + $message->getTo() + ), + 'attachments' => $message->getAttachments() ? \array_map( + fn ($attachement) => [ + 'type' => $attachement['type'], + 'name' => $attachement['name'], + 'content' => $attachement['content'], + ], + $message->getAttachments() + ) : null, + ], + ] + ) + ); + } +} diff --git a/tests/e2e/Email/MailchimpTest.php b/tests/e2e/Email/MailchimpTest.php new file mode 100644 index 00000000..5bed208e --- /dev/null +++ b/tests/e2e/Email/MailchimpTest.php @@ -0,0 +1,39 @@ +send($message))[0]; + + $this->assertArrayHasKey('_id', $result); + $this->assertArrayHasKey('status', $result); + $this->assertStringContainsStringIgnoringCase('sent', $result['status']); + } +}