Pular para o conteúdo

React Email

O React Email permite escrever templates de e-mail como componentes React. O SDK para Node os renderiza para você por meio da dependência peer opcional @react-email/render.

  1. Instale os pacotes.

    Janela do terminal
    npm install @spacepost/node @react-email/components @react-email/render react react-dom
  2. Escreva um template.

    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. Envie com a opção 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" />,
    });

O SDK renderiza o HTML e uma versão em texto simples. Se você também informar html ou text, o seu valor prevalece nesse campo.

Com o SDK do Resend apontando para o SpacePost (veja Migrar), a opção react funciona como no Resend, porque o SDK renderiza antes de enviar.