React Email
React Email 让你用 React 组件编写邮件模板。Node SDK 通过其可选的对等依赖 @react-email/render 为你渲染这些模板。
-
安装依赖包。
终端窗口 npm install @spacepost/node @react-email/components @react-email/render react react-dom -
编写模板。
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>);} -
使用
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 会在发送前完成渲染。