For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /es/docs/web/resend-email.md (or send Accept: text/markdown).
Añadir el email con Resend
Crea una cuenta de Resend gratuita, verifica un dominio de envío y cambia EMAIL_PROVIDER para que los códigos y recibos lleguen a bandejas de entrada reales.
Guía paso a paso para principiantes
Prerrequisitos: la app corriendo en local (Lanza en 5 minutos). Empieza gratis — sin tarjeta, y el nivel gratuito de Resend cubre los volúmenes de desarrollo.
Términos rápidos: EMAIL_PROVIDER=local es el predeterminado — los mensajes se escriben en la página incorporada /mail-preview y nunca salen de tu máquina, lo cual es perfecto mientras construyes. Resend es el adaptador que entrega en bandejas de entrada reales. EMAIL_FROM es la identidad de remitente que usan las plantillas; su dirección debe estar en un dominio que Resend haya verificado. Los registros DNS son las líneas que pegas en tu registrador o en Cloudflare para que los buzones receptores confíen en tu remitente.
Lo que creas: una cuenta de Resend, un dominio de envío verificado y una clave de API — el paso del dominio es la única parte de espera, ya que la propagación de DNS va de minutos a horas.
Crear la cuenta de Resend
1. Abre resend.com → Sign up, confirma tu email y llegas al panel.
2. Empieza con el nivel gratuito — incluso puedes enviar correo de prueba desde el remitente compartido de Resend antes de tener un dominio, que es lo que cubre la siguiente sección.
Verificar tu dominio de envío
Prueba rápida sin dominio: la dirección [email protected] funciona como EMAIL_FROM de inmediato — pero solo entrega al email con el que te registraste, nunca a usuarios. Úsala para ver la tubería funcionar y luego haz la configuración real.
1. Abre Domains → Add Domain e introduce el dominio desde el que envías (por ejemplo yourdomain.com; un subdominio como mail.yourdomain.com también funciona y mantiene los registros ordenados).
2. Resend lista los registros DNS a crear — registros TXT de DKIM más entradas MX/SPF o CNAME según la antigüedad de la cuenta. Añade cada uno en tu proveedor de DNS: la página de DNS de tu registrador, o Cloudflare si moviste los nameservers. En Cloudflare mantén la nube del proxy en gris (DNS only) para los registros de correo — los registros proxied nunca verifican.
3. De vuelta en Resend haz clic en Verify. Esperado: el dominio pasa a Verified. La propagación varía de minutos a un día; la página del dominio nombra el registro exacto que aún no resuelve.
Una vez verificado, cualquier dirección del dominio funciona como remitente — hello@, no-reply@, lo que use EMAIL_FROM — sin registro por dirección.
Crear la clave de API
1. Abre API Keys → Create API Key.
2. Permission: Sending access es suficiente — el kit solo envía. Nombra la clave por su entorno (production, local) para que una clave de desarrollo filtrada pueda revocarse sin tocar producción.
3. Copia la clave re_… ahora — se muestra una vez. Perderla solo significa crear otra.
Añadir los valores a la app
Escribe las líneas de abajo en apps/web/.env.local. RESEND_API_KEY es solo de servidor — nunca NEXT_PUBLIC_/EXPO_PUBLIC_, nunca commiteado; EMAIL_PROVIDER y EMAIL_FROM son configuración simple. Reinicia el servidor de desarrollo después de editar.
EMAIL_FROM debe estar en el dominio verificado: [email protected] solo llega a tu propia dirección de registro, y un dominio no verificado recibe un rechazo 403 de Resend.
# apps/web/.env.local
EMAIL_PROVIDER=resend
EMAIL_FROM="Your Product <[email protected]>"
RESEND_API_KEY=re_…Verificar y solucionar problemas
Reinicia, abre /auth y pide un código de inicio de sesión a una bandeja de entrada real que controles. Esperado: el mensaje llega, y Resend → Emails muestra la entrega con estado verde — ese registro es también donde viven los motivos de rebote y error.
¿No se envió nada? Comprueba que EMAIL_PROVIDER=resend se guardó de verdad en apps/web/.env.local y reinicia. Un 403 en el registro del servidor significa que EMAIL_FROM no está en el dominio verificado — o que [email protected] se envió a alguien que no eres tú.
¿Otro proveedor más adelante? EMAIL_PROVIDER también acepta ses (con las claves de AWS) y los transportes postmark, sendgrid, mailgun, smtp, brevo — mismo contrato de EMAIL_FROM, nombres de env distintos, todos listados en .env.example. La guía de email los compara.
Si quieres continuar la configuración, lee Configurar el correo de Amazon SES.