Como enviar um formulário do site por e-mail (5 métodos com código)

Enviar formulário do site por e-mail

Enviar formulário HTML por e-mail: 5 métodos com código (de sem backend a controle total) | We.Inc

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.

Perguntas frequentes

Dá para enviar e-mail só com HTML?

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.

Por que os e-mails do meu formulário caem no spam?

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.

O que é um campo honeypot?

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.

Preciso de um CAPTCHA?

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.

Como escolher um método

Privacidade

O formulário e o envio com JavaScript

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.

Formulário de contato acessível com honeypot

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.

Enviar com fetch e continuar na página

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.

Método 1: mailto

Action de formulário com mailto

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.

Método 2: um serviço de endpoint de formulário

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.

Método 3: Netlify Forms

Marcação do Netlify Forms

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.

Método 4: uma função serverless e uma API de e-mail

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.

Função serverless (Node, Request e Response no padrão web)

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.

Método 5: Google Apps Script

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.

App web do Apps Script

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.

Bônus: o seu próprio servidor PHP

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.

Handler PHP com verificações básicas

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

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site