saasprokit
Email

Email Providers

Resend and Nodemailer — the only two transports in this kit

The kit has two providers: resend and nodemailer. There is no SendGrid or Mailgun package, and MailDev is not a third provider — it is SMTP on localhost:1025 that Nodemailer talks to.

Implementations: packages/email/providers/resend.ts, packages/email/providers/nodemailer.ts, factory in packages/email/providers/index.ts. Both send() catch failures and return { success: false, error } — they do not throw.

Switching

  1. Explicit EMAIL_PROVIDER=resend or EMAIL_PROVIDER=nodemailer in apps/web/.env.local.
  2. If unset: production + RESEND_API_KEY → Resend, otherwise Nodemailer.

See Setup for the env blocks.

Resend

Production API. Set RESEND_API_KEY and a verified EMAIL_FROM. This kit only calls emails.send — no Resend webhooks or analytics routes.

Nodemailer

SMTP. Local defaults are localhost:1025 (MailDev). docker compose up -d maildev, then http://localhost:1080.

Other SMTP hosts (Gmail, SES, …) work with the same SMTP_* vars. They are not separate providers.

Comparison

ResendNodemailer
UseProductionLocal / any SMTP
React EmailNative react fieldRendered to HTML/text first
OfflineNoYes, with MailDev

On this page