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.
-
Instale os pacotes.
Janela do terminal npm install @spacepost/node @react-email/components @react-email/render react react-dom -
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>);} -
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.