Aller au contenu

React Email

React Email vous permet d’écrire des modèles d’e-mail sous forme de composants React. Le SDK Node les rend pour vous grâce à sa dépendance peer optionnelle @react-email/render.

  1. Installez les paquets.

    Fenêtre de terminal
    npm install @spacepost/node @react-email/components @react-email/render react react-dom
  2. Écrivez un modèle.

    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. Envoyez-le avec l’option 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" />,
    });

Le SDK génère le HTML et une version en texte brut. Si vous passez aussi html ou text, votre valeur l’emporte pour ce champ.

Avec le SDK Resend pointé vers SpacePost (voir Migrer), l’option react fonctionne comme avec Resend, car le SDK effectue le rendu avant l’envoi.