Ir al contenido

Next.js

  1. Instala el SDK.

    Ventana de terminal
    npm install @spacepost/node
  2. Añade tu clave a .env.local. No le pongas el prefijo NEXT_PUBLIC_.

    .env.local
    SPACEPOST_API_KEY=sp_live_YOUR_API_KEY
  3. Crea un 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);
    }
app/actions.ts
"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);
}

Instala @react-email/render y luego pasa un componente mediante react:

app/api/welcome/route.ts
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);
}