Documentação

Email (Resend)

Email transacional com Resend — verificação, redefinição de senha, templates e como adicionar novos emails.

Abrir emChatGPT (abre em uma nova aba)Claude (abre em uma nova aba)Cursor (abre em uma nova aba)Email transacional com Resend — verificação, redefinição de senha, templates e como adicionar novos emails.

O Motoko Base envia emails de auth e conta pelo Resend. Isto é apenas email transacional — não marketing.

Official docs: Resend documentation

Setup

  1. Crie uma conta no Resend
  2. Crie uma API key (permissão de envio)
  3. Adicione e verifique seu domínio de envio (SPF/DKIM) — ou use onboarding@resend.dev para testes locais
  4. Defina as env vars:
VariablePurpose
RESEND_API_KEYServer-only API key
EMAIL_FROMSender, e.g. My App <noreply@yourdomain.com>

Mantenha também BETTER_AUTH_URL alinhada com sua URL pública — o Better Auth monta links de verificação/reset a partir dela.

Sem Resend o app sobe, mas emails de verificação e redefinição de senha não serão enviados.

What sends automatically

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

O Better Auth possui tokens e URLs (src/lib/auth/auth.ts). A camada de email só entrega via helpers em src/lib/email/.

Templates

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

Construídos com @react-email/components. Edite o copy e o estilo nos arquivos de template. Nome da marca: shared.tsx.

Add a new transactional email

  1. Crie src/lib/email/templates/your-email.tsx (use TransactionalEmailLayout de shared.tsx)
  2. Exporte sendYourEmail(...) de src/lib/email/index.ts
  3. Chame de uma server action, webhook ou auth hook — nunca de client components

Somente src/lib/email/client.ts importa o SDK do Resend diretamente.

Auth UI routes

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

Forgot-password verifica isEmailConfigured() e mostra um erro claro se o Resend não estiver configurado.

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 — fluxo de verificação e reset.

Environment Variables — referência de env.