[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-83332":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":10,"trendingCount":16,"starSnapshotCount":16,"syncStatus":15,"lastSyncTime":35,"discoverSource":36},83332,"email-sdk","opencoredev\u002Femail-sdk","opencoredev","Email SDK is a lightweight TypeScript library for sending email through Resend, Postmark, SendGrid, Mailgun, Brevo, SMTP, and more","https:\u002F\u002Femail-sdk.dev",null,"MDX",111,4,1,2,0,13,2.1,false,"main",[22,23,24,25,5,26,27,28,29,30,31,32],"bun","developer-tools","email","email-api","nodemailer","postmark","resend","sdk","sendgrid","transactional-email","typescript","2026-06-12 02:04:33","# Email SDK\n\n[![GitHub stars](https:\u002F\u002Fshieldcn.dev\u002Fgithub\u002Fstars\u002Fopencoredev\u002Femail-sdk.svg?variant=branded&mode=dark)](https:\u002F\u002Fgithub.com\u002Fopencoredev\u002Femail-sdk\u002Fstargazers)\n[![GitHub issues](https:\u002F\u002Fshieldcn.dev\u002Fgithub\u002Fissues\u002Fopencoredev\u002Femail-sdk.svg?variant=secondary&mode=dark)](https:\u002F\u002Fgithub.com\u002Fopencoredev\u002Femail-sdk\u002Fissues)\n[![Last commit](https:\u002F\u002Fshieldcn.dev\u002Fgithub\u002Flast-commit\u002Fopencoredev\u002Femail-sdk.svg?variant=outline&mode=dark)](https:\u002F\u002Fgithub.com\u002Fopencoredev\u002Femail-sdk\u002Fcommits\u002Fmain)\n[![Follow on X](https:\u002F\u002Fshieldcn.dev\u002Fx\u002Ffollow\u002Fleodev.svg?variant=branded&mode=dark)](https:\u002F\u002Fx.com\u002Fleodev)\n\nA lightweight TypeScript SDK for transactional email send pipelines. Use one client in your app, pick the adapters you actually send through, validate provider compatibility before data is silently dropped, add retries and fallback routes, observe send behavior, and keep provider-specific field support visible in the docs.\n\nDocs: https:\u002F\u002Femail-sdk.dev\u002Fdocs\n\n## Sponsors\n\nEmail SDK is supported by companies helping keep provider integrations practical and maintained.\n\n### Special Sponsors\n\n| [\u003Cimg src=\".\u002Fapps\u002Ffumadocs\u002Fpublic\u002Fog\u002Fprovider-logos\u002Fresend-wordmark.jpg\" width=\"260\" height=\"55\" alt=\"Resend logo\">\u003Cbr>\u003Csub>\u003Cb>Resend\u003C\u002Fb>\u003C\u002Fsub>](https:\u002F\u002Fgo.resend.com\u002Femail-sdk)\u003Cbr>\u003Csub>[Docs](https:\u002F\u002Femail-sdk.dev\u002Fdocs\u002Fadapters\u002Fresend)\u003C\u002Fsub> | [\u003Cimg src=\".\u002Fapps\u002Ffumadocs\u002Fpublic\u002Fog\u002Fprovider-logos\u002Fsequenzy.jpeg\" width=\"96\" height=\"96\" alt=\"Sequenzy logo\">\u003Cbr>\u003Csub>\u003Cb>Sequenzy\u003C\u002Fb>\u003C\u002Fsub>](https:\u002F\u002Fwww.sequenzy.com\u002F)\u003Cbr>\u003Csub>[Docs](https:\u002F\u002Femail-sdk.dev\u002Fdocs\u002Fadapters\u002Fsequenzy)\u003C\u002Fsub> |\n| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |\n\n## What Is Here\n\n- `packages\u002Femail-sdk` - core SDK, adapters, plugins, CLI, tests, and package README\n- `apps\u002Ffumadocs` - documentation site\n- `skills\u002Femail-sdk` - repo-local agent skill for Email SDK integrations\n\n## Install\n\n```bash\nnpm install @opencoredev\u002Femail-sdk\n```\n\n```bash\npnpm add @opencoredev\u002Femail-sdk\n```\n\n```bash\nbun add @opencoredev\u002Femail-sdk\n```\n\nThe public npm package is `@opencoredev\u002Femail-sdk`; the unscoped `email-sdk` package is unrelated.\nThe CLI binary installed by this package is still named `email-sdk`.\n\nUse the SDK and CLI from server-side Node 20+ or Bun runtimes. Do not expose provider API keys in browser or client-side code.\n\n```ts\nimport { createEmailClient } from \"@opencoredev\u002Femail-sdk\";\nimport { resend } from \"@opencoredev\u002Femail-sdk\u002Fresend\";\n\nconst email = createEmailClient({\n  adapters: [resend({ apiKey: process.env.RESEND_API_KEY! })],\n});\n\nawait email.send({\n  from: \"Acme \u003Chello@acme.com>\",\n  to: \"user@example.com\",\n  subject: \"Welcome\",\n  html: \"\u003Cp>It works.\u003C\u002Fp>\",\n});\n```\n\n## SDK Surface\n\n- One normalized `EmailMessage` shape.\n- Adapter routing through `defaultAdapter`, per-send `adapter`, `fallback`, and `fallbackAdapters`.\n- Fail-fast field support checks for fields a provider cannot represent.\n- Retries inside one adapter and fallback routes after an adapter fails.\n- Hooks and the `observability` plugin for logs, metrics, traces, retry visibility, and errors.\n- Built-in `defaults`, `observability`, and `capture` plugins.\n- Test capture and memory\u002Ffailing adapters for app tests that should not call real providers.\n- CLI dry-runs, adapter discovery, setup checks, and smoke-test sends.\n- Built-in SMTP transport without Nodemailer.\n\nSee [packages\u002Femail-sdk\u002FREADME.md](packages\u002Femail-sdk\u002FREADME.md) for SDK usage examples, read the public docs at https:\u002F\u002Femail-sdk.dev\u002Fdocs, or start with these pages:\n\n- [Production send pipeline](https:\u002F\u002Femail-sdk.dev\u002Fdocs\u002Fguides\u002Fproduction-send-pipeline)\n- [Fallbacks and retries](https:\u002F\u002Femail-sdk.dev\u002Fdocs\u002Fconcepts\u002Ffallbacks-and-retries)\n- [Field support](https:\u002F\u002Femail-sdk.dev\u002Fdocs\u002Fadapters\u002Ffield-support)\n\n## Adapter Entry Points\n\n`resend`, `postmark`, `sendgrid`, `mailgun`, `mailersend`, `brevo`, `mailchimp`, `sparkpost`, `iterable`, `loops`, `sequenzy`, `plunk`, `mailtrap`, `cloudflare`, `unosend`, `scaleway`, `zeptomail`, `mailpace`, `smtp`, and `testing` are exported from separate package entry points.\n\nIf you are choosing your first adapter, start with Resend for the shortest path to a first send. Use Iterable or Sequenzy for product-led transactional sends. Use Postmark, SendGrid, AWS SES, Mailgun, Cloudflare, Unosend, or Brevo when you need broader provider-specific controls. Use SMTP when you already have a trusted SMTP service and only need address fields, headers, and plain message delivery.\n\nPlugin entry points:\n\n- `@opencoredev\u002Femail-sdk\u002Fplugins\u002Fdefaults`\n- `@opencoredev\u002Femail-sdk\u002Fplugins\u002Fobservability`\n- `@opencoredev\u002Femail-sdk\u002Fplugins\u002Fcapture`\n\n## CLI\n\nRun the CLI without installing anything globally:\n\n```bash\nbunx --bun --package @opencoredev\u002Femail-sdk email-sdk adapters\n```\n\nAfter adding the package to a project, run the installed binary:\n\n```bash\nRESEND_API_KEY=\"re_...\" npx email-sdk doctor --adapter resend\n```\n\n## Agent Skill\n\nInstall the Email SDK agent skill from skills.sh when you want an AI agent to add, review, or document an integration:\n\n```bash\nnpx skills add opencoredev\u002Femail-sdk --skill email-sdk\n```\n\nThe skill is stored in `skills\u002Femail-sdk\u002FSKILL.md`. It tells agents to refresh the current README, Fumadocs pages, package exports, and TypeScript declarations before implementing, so the guidance stays useful as the SDK evolves without needing every new adapter or option copied into the skill.\n\n## Development\n\n```bash\nbun install\nbun test\nbun run check-types\nbun run build\n```\n\nUseful workspace scripts:\n\n- `bun run build` - build packages and apps through Turbo\n- `bun run check-types` - run TypeScript checks across the workspace\n- `bun test` - run package tests\n- `bun run check` - run Oxlint and Oxfmt with write formatting\n- `bun run dev` - start the docs dev server through Turbo\n\n## Releases\n\nReleases use Changesets, Depot-backed GitHub Actions runners, npm, and the repo-local Homebrew formula. Release operator notes live in [AGENTS.md](AGENTS.md).\n\nDo not start the docs dev server unless you actually want a local preview.\n\n## Reliability Notes\n\nThe SDK validates messages locally and adapter tests verify payload mapping with injected fetch calls. Real provider sends still depend on live account setup: verified domains, sender identities, API scopes, sandbox settings, regions, rate limits, and provider-specific policy.\n\nBefore production use, configure one primary adapter, add a fallback adapter where delivery matters, and run a live smoke send from the target environment.\n","2026-06-11 04:10:57","CREATED_QUERY"]