Dokumentation

E-Mail (Resend)

Transaktionale E-Mails mit Resend — Verifizierung, Passwort-Reset, Templates und neue E-Mails hinzufügen.

Öffnen inChatGPT (öffnet in neuem Tab)Claude (öffnet in neuem Tab)Cursor (öffnet in neuem Tab)Transaktionale E-Mails mit Resend — Verifizierung, Passwort-Reset, Templates und neue E-Mails hinzufügen.

Motoko Base sendet Auth- und Account-E-Mails über Resend. Das ist nur transaktionale E-Mail — kein Marketing.

Official docs: Resend documentation

Setup

  1. Erstelle ein Resend-Konto
  2. Erstelle einen API-Key (Sendeberechtigung)
  3. Füge deine Absender-Domain hinzu und verifiziere sie (SPF/DKIM) — oder nutze onboarding@resend.dev für lokale Tests
  4. Setze Env-Vars:
VariablePurpose
RESEND_API_KEYServer-only API key
EMAIL_FROMSender, e.g. My App <noreply@yourdomain.com>

Halte außerdem BETTER_AUTH_URL an deine öffentliche URL angepasst — Better Auth baut Verifizierungs-/Reset-Links daraus.

Ohne Resend startet die App, aber Verifizierungs- und Passwort-Reset-E-Mails werden nicht gesendet.

What sends automatically

EmailTriggerTemplate
VerificationSign up / resendverification-email.tsx
Password resetForgot passwordpassword-reset-email.tsx
WelcomeAccount createdwelcome-email.tsx

Better Auth besitzt Tokens und URLs (src/lib/auth/auth.ts). Die E-Mail-Schicht liefert nur über Helpers in src/lib/email/ aus.

Templates

src/lib/email/templates/
  shared.tsx              # layout, brand name
  verification-email.tsx
  password-reset-email.tsx
  welcome-email.tsx

Gebaut mit @react-email/components. Bearbeite Copy und Styling in den Template-Dateien. Markenname: shared.tsx.

Add a new transactional email

  1. Erstelle src/lib/email/templates/your-email.tsx (nutze TransactionalEmailLayout aus shared.tsx)
  2. Exportiere sendYourEmail(...) aus src/lib/email/index.ts
  3. Rufe es aus einer Server Action, einem Webhook oder Auth-Hook auf — nie aus Client Components

Nur src/lib/email/client.ts importiert das Resend-SDK direkt.

Auth UI routes

RoutePurpose
/forgot-passwordRequest reset link
/reset-passwordSet new password from email link
/verify-emailResend verification

Forgot-password prüft isEmailConfigured() und zeigt eine klare Fehlermeldung, wenn Resend nicht gesetzt ist.

Where to change this

WhatWhere
Send helperssrc/lib/email/index.ts
Resend client & configsrc/lib/email/client.ts, config.ts
Templatessrc/lib/email/templates/
Auth email hookssrc/lib/auth/auth.ts

Better Auth — Verifizierungs- und Reset-Flow.

Environment Variables — Env-Referenz.