Ir al contenido

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.

  1. Instala los paquetes.

    Ventana de terminal
    npm install @spacepost/node @react-email/components @react-email/render react react-dom
  2. 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>
    );
    }
  3. 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.