Radondocs

Quickstart

Send your first email with Radon Email in about five minutes — one provider, one send, no branching decisions.

By the end of this page you'll have sent a real email through a unified API and read back a normalized result. We'll use Resend because its API key works instantly and it's free (no license), but every step maps onto any of the 16 providers.

Prerequisites

Node 18 or newer, and a Resend account with an API key (re_…) from the Resend dashboard. Sending from a custom domain requires verifying it in Resend first.

Install the package

npm install @radonsdk/email

Zero required dependencies — no resend SDK, no axios. Radon talks to every provider over fetch. (Only the generic SMTP fallback needs nodemailer, an optional peer dependency.)

Set your key

Radon reads provider credentials from environment variables named RADON_<PROVIDER>_<KEY>, so you never hard-code secrets.

.env
RADON_RESEND_API_KEY=re_...

Create the client

Configure the providers you use and a defaultFrom address applied to every message that doesn't set its own.

lib/email.ts
import { RadonEmail } from "@radonsdk/email";

export const email = new RadonEmail({
  providers: { resend: {} },              // {} = read creds from the env var
  defaultFrom: "Acme <hello@acme.com>",   // required unless every message sets `from`
});

With free-only providers you don't need to call email.init(). init() is only required when you configure a Pro provider or use a Pro feature (batch, template management, webhooks) — it verifies your license.

Send an email

Any subject, html, or text can contain {{variable}} placeholders. Pass variables and Radon interpolates them for free, before the adapter runs.

Send one email
import { email } from "@/lib/email";

const result = await email.send({
  to: "ada@example.com",
  subject: "Welcome, {{name}}!",
  html: "<p>Hi {{name}}, thanks for joining.</p>",
  variables: { name: "Ada" },
});

Check the result

Every provider returns the same SendResult shape.

console.log(result.status);   // "queued" | "sent" | "scheduled"
console.log(result.id);       // provider message id — correlates to webhook events
console.log(result.provider); // "resend"
console.log(result.accepted); // ["ada@example.com"]

You should see a status of "queued", an id string, and the email arrive in the recipient's inbox (or the Resend dashboard's Emails log).

🎉 That's it

You sent an email through a unified API. The exact same code runs on SendGrid, Amazon SES, or Mailgun — you'd only change the providers config.

Next steps

On this page