Adapters
Adapters
Supported email service adapters and transports.
Email SDK ships with 17 adapters. Import only the adapter you use; the package does not ask you to configure providers that are not on your send path.
Every adapter follows the same contract: map the fields it supports and throw a validation error for fields the provider API cannot represent. Use the SDK field support guide before choosing fallback routes.
Resend
Popular APIs
OfficialPayload-testedLive account required
@opencoredev/email-sdk/resendPostmark
Popular APIs
OfficialPayload-testedLive account required
@opencoredev/email-sdk/postmarkSendGrid
Popular APIs
OfficialPayload-testedLive account required
@opencoredev/email-sdk/sendgridAWS SES
Infrastructure
OfficialPayload-testedLive account required
@opencoredev/email-sdk/sesMailgun
Popular APIs
OfficialPayload-testedLive account required
@opencoredev/email-sdk/mailgunMailerSend
Popular APIs
OfficialPayload-testedLive account required
@opencoredev/email-sdk/mailersendBrevo
Popular APIs
OfficialPayload-testedLive account required
@opencoredev/email-sdk/brevoMailchimp Transactional
Popular APIs
OfficialPayload-testedLive account required
@opencoredev/email-sdk/mailchimpSparkPost
Infrastructure
OfficialPayload-testedLive account required
@opencoredev/email-sdk/sparkpostMailtrap
Infrastructure
OfficialPayload-testedLive account required
@opencoredev/email-sdk/mailtrapCloudflare Email Sending
Infrastructure
OfficialPayload-testedLive account required
@opencoredev/email-sdk/cloudflareScaleway
Infrastructure
OfficialPayload-testedLive account required
@opencoredev/email-sdk/scalewayZeptoMail
Infrastructure
OfficialPayload-testedLive account required
@opencoredev/email-sdk/zeptomailMailPace
Infrastructure
OfficialPayload-testedLive account required
@opencoredev/email-sdk/mailpaceLoops
Product-led
OfficialPayload-testedLive account required
@opencoredev/email-sdk/loopsPlunk
Product-led
OfficialPayload-testedLive account required
@opencoredev/email-sdk/plunkSMTP
SMTP
Transport
OfficialBuilt-in transportSMTP server required
@opencoredev/email-sdk/smtpWhich adapter should I start with?
| If you want... | Start with |
|---|---|
| The fastest first send | Resend |
| Mature transactional delivery controls | Postmark, SendGrid, AWS SES, Mailgun, or Brevo |
| A backup route for production delivery | A primary API adapter plus Postmark or SMTP |
| Product-triggered emails | Loops or Plunk |
| A cheap or self-managed transport | SMTP |
| Heavy attachment support | Resend, Postmark, SendGrid, Mailgun, MailerSend, Mailtrap |
What the status labels mean
Provider cards use three labels:
Officialmeans the adapter ships in@opencoredev/email-sdk.Payload-testedmeans repository tests cover request mapping, responses, and fail-fast validation with injected fetch calls.Built-in transportmeans the adapter sends through Email SDK's own transport implementation instead of a provider API.Live account requiredmeans final delivery still depends on provider setup: verified domains, sender identities, API scopes, sandbox settings, regions, rate limits, and provider policy.SMTP server requiredmeans final delivery depends on the SMTP host, credentials, and TLS settings you provide.
Email SDK can catch unsupported fields before a request. It cannot make a provider account ready to send from an unverified domain.
Import pattern
import { createEmailClient } from "@opencoredev/email-sdk";
import { resend } from "@opencoredev/email-sdk/resend";
import { smtp } from "@opencoredev/email-sdk/smtp";
const email = createEmailClient({
adapters: [
resend({ apiKey: process.env.RESEND_API_KEY! }),
smtp({
host: process.env.SMTP_HOST!,
auth: {
user: process.env.SMTP_USER!,
pass: process.env.SMTP_PASS!,
},
}),
],
fallback: ["smtp"],
});Adapter groups
| Group | Adapters |
|---|---|
| Popular APIs | Resend, Postmark, SendGrid, Mailgun, MailerSend, Brevo, Mailchimp Transactional |
| Infrastructure | Cloudflare Email Sending, SparkPost, Mailtrap, Scaleway, ZeptoMail, MailPace |
| Product-led | Loops, Plunk |
| Transport | Built-in SMTP |
