跳转到内容

React Email

React Email 让你用 React 组件编写邮件模板。Node SDK 通过其可选的对等依赖 @react-email/render 为你渲染这些模板。

  1. 安装依赖包。

    终端窗口
    npm install @spacepost/node @react-email/components @react-email/render react react-dom
  2. 编写模板。

    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. 使用 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" />,
    });

SDK 会渲染出 HTML 和纯文本两个版本。如果你同时传入了 html 或 text,对应字段以你传入的为准。

当 Resend SDK 指向 SpacePost 时(参见迁移),react 选项的行为与在 Resend 上一致,因为 SDK 会在发送前完成渲染。