JetSend com Next.js
Como enviar e-mail pelo JetSend num app Next.js, sem expor a chave de API no navegador.
A chave fica no servidor
Ponha a chave em JETSEND_API_KEY no .env.local e na hospedagem. Nunca com o prefixo NEXT_PUBLIC_: com ele o Next coloca o valor no JavaScript que vai para o navegador, e qualquer pessoa manda e-mail em nome do seu domínio.
Route Handler
typescript
// app/api/contato/route.tsexport async function POST(req: Request) { const { email, mensagem } = await req.json(); const r = await fetch("https://api.jetsend.com.br/v1/messages", { method: "POST", headers: { Authorization: `Bearer ${process.env.JETSEND_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ from: "contato@suaempresa.com.br", to: email, subject: "Recebemos sua mensagem", text: mensagem, }), }); if (!r.ok) { const { error } = await r.json(); return Response.json({ erro: error.code }, { status: 502 }); } return Response.json({ ok: true });}O formulário do navegador chama /api/contato; a chave nunca sai do servidor.
Server Action
Mesma chamada, direto de um formulário, sem rota separada:
typescript
// app/contato/actions.ts"use server";export async function enviarContato(form: FormData) { await fetch("https://api.jetsend.com.br/v1/messages", { method: "POST", headers: { Authorization: `Bearer ${process.env.JETSEND_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ from: "contato@suaempresa.com.br", to: String(form.get("email")), subject: "Recebemos sua mensagem", text: String(form.get("mensagem")), }), });}