Pular para o conteúdo
JetSend

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")),    }),  });}

Cookies neste site

Os essenciais fazem o site funcionar. Os outros, medição de audiência e atribuição de campanha, só com a sua permissão.

Você pode recusar sem perder nada do site. Detalhes na Política de Privacidade.