Cinco formas que funcionam para receber no seu e-mail os envios de formulários do site: mailto, um serviço de endpoint de formulário, Netlify Forms, uma função serverless com API de e-mail e Google Apps Script. Com código JavaScript de envio e proteção contra spam.
Uma página web não consegue enviar e-mail sozinha. O formulário precisa enviar os dados para algo que consiga: um serviço de endpoint de formulário, o recurso de formulários da sua hospedagem, uma função serverless que chama uma API de e-mail, um Google Apps Script ou o seu próprio servidor. Escolha pelo nível de controle de que você precisa e envie com JavaScript para que o visitante continue na página.
Os cinco métodos comparados
Cada método abaixo tem código completo. Comece pelo formulário e pelo handler de envio em JavaScript, que funcionam com todos os métodos, e depois escolha um backend.
Só com um action mailto:, que abre o aplicativo de e-mail do próprio visitante com os dados preenchidos. Ele falha para quem não tem um aplicativo de e-mail configurado, o que inclui muita gente em computadores compartilhados ou do trabalho, e você não consegue estilizar nem validar o resultado. Para qualquer coisa importante, use um dos outros métodos.
Geralmente porque a mensagem diz vir do endereço do visitante, ou porque o seu domínio não tem registros SPF, DKIM e DMARC para o serviço que faz o envio. Envie a partir de um endereço do seu próprio domínio, defina o visitante como reply-to e adicione os registros DNS que o seu provedor de e-mail fornece.
Um campo oculto para as pessoas, mas visível para bots simples. Humanos deixam o campo vazio; bots preenchem. O seu backend descarta qualquer envio em que ele tenha valor. Isso bloqueia muito spam básico sem incomodar os visitantes reais.
No começo, não. Comece com um honeypot e verificações no servidor, como rejeitar mensagens cheias de links. Adicione um desafio só se o spam continuar chegando, e prefira um que não peça para as pessoas resolverem quebra-cabeças.
Este front-end funciona com todos os métodos. O script envia o formulário com fetch, mostra uma mensagem de status e mantém o texto se o envio falhar.
Os rótulos envolvem os seus campos, o navegador verifica os campos obrigatórios e o formato do e-mail, e a linha de status é anunciada aos leitores de tela.
Funciona com qualquer endpoint que aceite um envio de formulário normal. Se o endpoint esperar JSON, envie JSON.stringify(Object.fromEntries(data)) com um content type JSON.
Abre o aplicativo de e-mail do visitante com os campos no corpo da mensagem. Não precisa de servidor, mas nada é enviado se a pessoa não tiver um aplicativo de e-mail.
Serviços como Formspree, Basin, Getform e Web3Forms fornecem uma URL para onde enviar e encaminham cada envio para o seu e-mail. Crie uma conta, crie um formulário, cole a URL dele no atributo action do formulário acima e mantenha o script com fetch. Confira os limites grátis atuais de cada serviço e onde ele armazena os dados.
A Netlify detecta o formulário no momento do deploy quando ele tem o atributo data-netlify. Ative as notificações por e-mail nas configurações de formulários do site. Para formulários renderizados com JavaScript, mantenha também uma cópia em HTML puro nos arquivos gerados para que a Netlify consiga encontrá-lo.
A função recebe o formulário, faz as verificações e chama uma API de e-mail com uma chave secreta mantida no servidor. Este exemplo usa a API REST do Resend; SendGrid, Postmark e Amazon SES funcionam da mesma forma, com os próprios endpoints.
Funciona em plataformas que usam os objetos web Request e Response. Defina RESEND_API_KEY nas variáveis de ambiente da hospedagem e verifique antes o seu domínio de envio no provedor de e-mail.
Um script curto, publicado como app web a partir de uma conta Google, envia cada formulário por e-mail e pode registrá-lo em uma planilha. Há cotas diárias de e-mail, então ele serve para formulários de baixo volume.
Em um novo projeto do Apps Script, cole isto e depois implante como app web executado como você e acessível a qualquer pessoa. Use a URL do app web como action do formulário.
Hospedagens compartilhadas costumam rodar PHP. A função nativa mail() funciona em muitas hospedagens, mas a entregabilidade é melhor com uma biblioteca SMTP como o PHPMailer e uma caixa de e-mail real no seu domínio.
Rejeita requisições que não são POST, remove espaços das entradas, recusa quebras de linha no endereço de resposta (que permitiriam a atacantes adicionar cabeçalhos) e redireciona para uma página de agradecimento.
Comece grátis · Sem cartão de crédito