Next.js
-
Install the SDK.
Terminal window npm install @spacepost/node -
Add your key to
.env.local. Do not prefix it withNEXT_PUBLIC_..env.local SPACEPOST_API_KEY=sp_live_YOUR_API_KEY -
Create a route handler.
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 actions
Section titled “Server actions”"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”Install @react-email/render, then pass a component through 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);}