Next.js
-
安装 SDK。
终端窗口 npm install @spacepost/node -
把密钥添加到
.env.local。不要加NEXT_PUBLIC_前缀。.env.local SPACEPOST_API_KEY=sp_live_YOUR_API_KEY -
创建路由处理器。
app/api/send/route.ts import { SpacePost } from "@spacepost/node";const spacepost = new SpacePost(process.env.SPACEPOST_API_KEY);export async function POST(request: Request) {const { email } = await request.json();const { data, error } = await spacepost.emails.send({from: "Acme <hello@acme.com>",to: [email],subject: "Hello from Next.js",html: "<p>Sent from a route handler.</p>",});if (error) return Response.json({ error }, { status: error.statusCode ?? 500 });return Response.json(data);}
Server Action
Section titled “Server Action”"use server";
import { SpacePost } from "@spacepost/node";
const spacepost = new SpacePost(process.env.SPACEPOST_API_KEY);
export async function subscribe(formData: FormData) { const email = String(formData.get("email")); const { error } = await spacepost.emails.send({ from: "Acme <hello@acme.com>", to: email, subject: "You're on the list", text: "Thanks for subscribing.", }); if (error) throw new Error(error.message);}React Email
Section titled “React Email”安装 @react-email/render,然后通过 react 传入组件:
import { SpacePost } from "@spacepost/node";import WelcomeEmail from "@/emails/welcome";
const spacepost = new SpacePost();
export async function POST() { const { data, error } = await spacepost.emails.send({ from: "Acme <hello@acme.com>", to: "user@example.com", subject: "Welcome", react: <WelcomeEmail name="Ada" />, }); return Response.json(error ?? data);}