Unified email sending for TypeScript

One email client. Every provider you trust.

Send through Resend, SMTP, Postmark, and more without rewriting provider glue or hiding what each adapter supports.

Fallbacks

Fail over by route

Contracts

No silent field drops

CLI

Test sends locally

email.ts
1import { createEmailClient } from "email-sdk";2import { resend } from "email-sdk/resend";3import { smtp } from "email-sdk/smtp";5const email = createEmailClient({6  adapters: [7    resend({ apiKey: process.env.RESEND_API_KEY! }),8    smtp({9      host: process.env.SMTP_HOST!,10      auth: {11        user: process.env.SMTP_USER!,12        pass: process.env.SMTP_PASS!,13      },14    }),15  ],16  fallback: ["smtp"],17  retry: { retries: 1 },18});20await email.send({21  from: "Acme <hello@acme.com>",22  to: "user@example.com",23  subject: "Welcome",24  text: "Your account is ready.",25});