React Email
React Email ti permette di scrivere template email come componenti React. L’SDK Node li renderizza per te tramite la sua dipendenza peer facoltativa @react-email/render.
-
Installa i pacchetti.
Finestra del terminale npm install @spacepost/node @react-email/components @react-email/render react react-dom -
Scrivi un 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>);} -
Invialo con l’opzione
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" />,});
L’SDK genera l’HTML e una versione in solo testo. Se passi anche html o text, i tuoi valori hanno la precedenza per quel campo.
Con l’SDK di Resend puntato su SpacePost (vedi Migrare), l’opzione react funziona come con Resend, perché l’SDK esegue il rendering prima dell’invio.