Zoeken

Zoek in Kavel...

Documentatiemenu

E-mail

Transactionele e-mail via Resend, met getypeerde React-templates en een duurzame verzendwachtrij.

Wat je krijgt

  • sendEmail: render een template en verstuur hem meteen
  • enqueueEmail + flushEmailQueue, sla e-mails op in D1 en verstuur ze vanuit een geplande Worker, met retries per rij zodat één slechte ontvanger geen batch laat mislukken
  • React-e-mailtemplates in packages/transactional, te previewen tijdens ontwikkeling

Mail versturen

ts
import { sendEmail } from "@/lib/email";
import { WelcomeEmail } from "@my-app/transactional/emails/welcome";

await sendEmail(env, {
  to: user.email,
  subject: "Welcome aboard",
  react: WelcomeEmail({ name: user.name }),
});

De wachtrij

Zet alles wat niet urgent is in de wachtrij in plaats van inline te versturen. Het renderen gebeurt bij het toevoegen, dus de wachtrij bevat alleen afgeronde HTML. Een cron-getriggerde flushEmailQueue leegt hem in batches, markeert elke rij als verzonden of noteert de fout en verhoogt het aantal pogingen.

Let op

Zonder RESEND_API_KEY loggen zowel sendEmail als het legen van de wachtrij een waarschuwing en slaan ze het versturen over. Zo blijven flows zoals auth-verificatie lokaal werken voordat je e-mail hebt opgezet.

Opzetten

bash
# in apps/api/.dev.vars
RESEND_API_KEY=re_...
EMAIL_FROM="My App <noreply@myapp.com>"

Preview templates tijdens ontwikkeling:

bash
cd packages/transactional && bun preview