React Email
React Email te permite escribir plantillas de correo como componentes de React. El SDK de Node las renderiza por ti mediante su dependencia peer opcional @react-email/render.
-
Instala los paquetes.
Ventana de terminal npm install @spacepost/node @react-email/components @react-email/render react react-dom -
Escribe una plantilla.
emails/welcome.tsx import { Html, Head, Body, Container, Heading, Text, Button, Preview } from "@react-email/components";export default function WelcomeEmail({ name, url }: { name: string; url: string }) {return (<Html><Head /><Preview>Welcome to Acme</Preview><Body style={{ backgroundColor: "#f6f9fc", fontFamily: "system-ui, sans-serif" }}><Container style={{ backgroundColor: "#fff", padding: 32, borderRadius: 8 }}><Heading>Welcome, {name}</Heading><Text>Your account is ready.</Text><Button href={url} style={{ background: "#0e9f7a", color: "#fff", padding: "10px 20px", borderRadius: 6 }}>Open dashboard</Button></Container></Body></Html>);} -
Envíala con la opción
react.send.tsx import { SpacePost } from "@spacepost/node";import WelcomeEmail from "./emails/welcome";const spacepost = new SpacePost(process.env.SPACEPOST_API_KEY);const { data, error } = await spacepost.emails.send({from: "Acme <hello@acme.com>",to: "user@example.com",subject: "Welcome to Acme",react: <WelcomeEmail name="Ada" url="https://app.acme.com" />,});
El SDK renderiza el HTML y una versión en texto plano. Si además pasas html o text, el tuyo prevalece en ese campo.
Con el SDK de Resend apuntando a SpacePost (consulta Migrar), la opción react funciona igual que con Resend, porque el SDK renderiza antes de enviar.