Skip to content
Lever elke weekUI and contentemail

E-mails die aankomen

Welkomstmails, bevestigingen en meldingen bereiken de inbox. Sjablonen zitten erbij.

Welkomstmails, bevestigingen en meldingen bereiken de inbox. Sjablonen zitten erbij.

  • 1 path every email goes through
  • 5 ready-made email templates
  • 0 email secrets in browser code

Hoe het werkt

Het mechanisme van begin tot eind, zoals het in de repository is geïmplementeerd.

  1. 1

    Choose or write a template

    Use a typed React Email or MJML template with props for names, amounts, and links. Five templates share one responsive layout, and the local studio previews desktop, mobile, text, and source.

  2. 2

    Send from the server

    Your server code or a background job calls one send helper with the component, a to-address, and a subject. The helper reads server-only config, so it can never end up in browser code.

  3. 3

    It renders and delivers

    The helper turns the component into HTML and hands it to the email provider. If the provider fails, the error is thrown so background jobs retry instead of losing the email.

  4. 4

    No keys, no crash

    If the email keys aren't set, the helper logs a warning and returns. Local dev and CI run fine without provider credentials.

Interactief voorbeeld

Bekijk het in werking

Deze rondleiding toont het geïmplementeerde backendcontract zonder account, credentials of providercalls.

Interactief voorbeeld

Explore the implemented decisions

Kies een voorbeeldstatus
Welcome component

Alleen deterministische voorbeelddata. De interactie gebruikt geen account-, provider- of netwerkverbinding.

Het probleem dat dit oplost

Zonder een gedeelde basis bouwt elk team deze randgevallen opnieuw — en anders.

The template that broke without telling you

Your emails live in a vendor dashboard. Someone renames a variable in the app. Weeks later a customer sends a screenshot of a receipt that says {firstName}. Here, templates are typed code: that rename fails the build instead.

Five features, five ways to send email

Each feature spun up its own email client. Now from-addresses don't match, errors get swallowed differently, and switching providers means hunting through the whole codebase. Here there's one send path to change.

New teammate, day one, blocked

The app crashes on boot because they don't have an email API key. So they either beg for production credentials or wrap every send in if-statements. Here, missing keys just turn sends into logged skips.

Kernpunten

Waarom dit belangrijk is

Emails are code, not dashboard blobs

Five ready templates live in your repo as typed React Email functions with matching MJML variants. Change them like any other code, with review and version history.

One door for every send

Every feature and background job sends through the same helper, so the from-address, styling, and error handling live in one place.

Works without keys in dev

No email API key set? Sends log a warning and skip. Nothing crashes, and nobody needs production secrets to run the app locally.

Technische garanties

Wat dit wel en niet belooft

Veiligheidsgrens

Achter de schermen houden autorisatie, tenantgrenzen en foutafhandeling één duidelijke eigenaar. Zo blijft de snelle ervaring voor gebruikers gekoppeld aan veilig herstel als het misgaat.

Implementatiebewijs

De grens hierboven is geen claim maar code. Deze bestanden dragen het contract:

  • src/lib/email.ts
  • src/lib/email/templates
  • src/features/privacy/jobs.ts
Vragen

Veelgestelde vragen

Bouw verder op E-mails die aankomen

De documentatie beschrijft dezelfde contracten die deze pagina demonstreert.