Pular para o conteúdo
Guide

Valide um endereço de e-mail sem enviar uma única mensagem

| 7 min read

Verifique a sintaxe do e-mail, os registros MX e os domínios descartáveis ​​com três chamadas de API. Sem conexão SMTP, sem e-mail de verificação, sem risco de devolução. API gratuita de validação de e-mail.

Email inbox with verification badges
Photo by Stephen Phillips on Unsplash

Seu formulário de inscrição coleta um endereço de e-mail. Você armazena, envia uma mensagem de boas-vindas e o e-mail salta. O endereço foi um erro de digitação. Ou o domínio não existe. Ou foi um descarte @mailinator.com endereço que estará morto em dez minutos. Agora você tem um lixo registro em seu banco de dados, uma reputação de remetente prejudicada e um usuário que nunca mais voltará.

A solução tradicional é enviar um e-mail de verificação: “Clique neste link para confirmar seu endereço”. Funciona, mas adiciona atrito. A conversão cai. E só detecta o erro de digitação depois você já enviou uma mensagem para um endereço incorreto.

Você pode validar um endereço de e-mail antes de enviar qualquer coisa. Três chamadas de API verificam a sintaxe, MX registros e domínios descartáveis. Todo o processo leva menos de 200 ms e detecta os problemas que causam 90% das falhas na entrega de e-mail.

Três camadas de validação de e-mail

Cada camada captura uma classe diferente de endereço de e-mail inválido. Use-os juntos para um completo pipeline de verificação de e-mail ou escolha aqueles que você precisa.

  • Validação de sintaxe. O endereço segue um formato válido? O domínio tem um erro de digitação conhecido? O /v1/email/validate endpoint verifica a conformidade com RFC 5322, detecta endereços baseados em funções (admin@, support@) e sugere correções para erros ortográficos comuns de domínio, como gmial.com ou hotmal.com.
  • Verificação de registro MX. O domínio pode receber e-mail? O /v1/email-mx/verify endpoint consulta DNS em busca de registros MX e volta para A registros. Se o domínio não tiver servidor de correio, o endereço não poderá ser entregue; não há necessidade de tentar novamente vai consertar isso.
  • Detecção de e-mail descartável. O endereço é de um serviço descartável? O /v1/disposable-email/check verificações de endpoint em mais de 700 domínios descartáveis conhecidos e variações de correspondência de padrões. Ele também sinaliza se o domínio é um provedor gratuito (Gmail, Outlook) para que você possa distinguir entre endereços pessoais e descartáveis.

Verifique a sintaxe do e-mail e detecte erros de digitação

O /v1/email/validate endpoint faz mais trabalho em uma única chamada. Ele valida formato, consulta registros MX, verifica domínios descartáveis e detecta erros de digitação em domínios do provedor.

Resposta:

O e-mail jamie@gmial.com tem sintaxe válida, mas o domínio é um erro de digitação. A API retorna is_valid: false porque não existem registros MX para gmial.com, e sugere o endereço corrigido jamie@gmail.com. Mostre esta sugestão em seu formulário de inscrição e você salva o usuário de uma conta inativa.

Verifique os registros MX para verificar se o e-mail é real

O /v1/email-mx/verify endpoint se concentra no DNS. Ele retorna a lista completa de MX registros com prioridades e um deliverable campo que informa se o domínio pode receber correspondência.

Resposta:

O deliverable campo retorna um dos três valores: "likely" (MX registros encontrados), "unknown" (não existe MX, mas existe um registro A, então o domínio pode aceitar correspondência), ou "unlikely" (sem registros MX e sem registros A). Use isto para registro MX validação quando você precisar dos dados DNS brutos.

Detecte endereços descartáveis ​​e descartáveis

O /v1/disposable-email/check endpoint identifica serviços de e-mail temporários. Esses endereços funcionam por minutos ou horas e depois param de aceitar correspondências.

Resposta:

O is_free campo separa domínios descartáveis ​​de provedores gratuitos. Um Gmail endereço retorna is_free: true e is_disposable: false. Um Mailinador endereço retorna is_disposable: true e is_free: false. Isto a distinção é importante; bloquear todos os provedores gratuitos bloquearia a maior parte da Internet.

Crie um pipeline de validação em Node.js

Combine todas as três verificações em uma única função. Este pipeline executa cada verificação sequencialmente e curto-circuitos na primeira falha.

async function validateEmail(email) {
  const headers = { "Content-Type": "application/json" };
  const body = JSON.stringify({ email });

  // Step 1: Syntax validation + typo detection
  const syntaxRes = await fetch("https://api.botoi.com/v1/email/validate", {
    method: "POST", headers, body,
  });
  const syntax = await syntaxRes.json();

  if (!syntax.data.format_valid) {
    return { valid: false, reason: "Invalid email format" };
  }

  if (syntax.data.suggestion) {
    return {
      valid: false,
      reason: \`Did you mean \${syntax.data.suggestion}?\`,
    };
  }

  // Step 2: MX record verification
  const mxRes = await fetch("https://api.botoi.com/v1/email-mx/verify", {
    method: "POST", headers, body,
  });
  const mx = await mxRes.json();

  if (!mx.data.has_mx) {
    return { valid: false, reason: "Domain cannot receive email" };
  }

  // Step 3: Disposable email detection
  const dispRes = await fetch("https://api.botoi.com/v1/disposable-email/check", {
    method: "POST", headers, body,
  });
  const disp = await dispRes.json();

  if (disp.data.is_disposable) {
    return {
      valid: false,
      reason: \`Disposable email detected (\${disp.data.provider})\`,
    };
  }

  return { valid: true, reason: null };
}

// Usage
const result = await validateEmail("test@mailinator.com");
console.log(result);
// { valid: false, reason: "Disposable email detected (Mailinator)" }

A abordagem sequencial é legível e sai mais cedo. Se a sintaxe falhar, você pula a rede solicita MX e cheques descartáveis. Se você preferir velocidade em vez de rescisão antecipada, execute todos três em paralelo:

async function validateEmail(email) {
  const headers = { "Content-Type": "application/json" };
  const body = JSON.stringify({ email });

  // Run all three checks in parallel
  const [syntaxRes, mxRes, dispRes] = await Promise.all([
    fetch("https://api.botoi.com/v1/email/validate", {
      method: "POST", headers, body,
    }),
    fetch("https://api.botoi.com/v1/email-mx/verify", {
      method: "POST", headers, body,
    }),
    fetch("https://api.botoi.com/v1/disposable-email/check", {
      method: "POST", headers, body,
    }),
  ]);

  const [syntax, mx, disp] = await Promise.all([
    syntaxRes.json(), mxRes.json(), dispRes.json(),
  ]);

  const errors = [];

  if (!syntax.data.format_valid) errors.push("Invalid format");
  if (syntax.data.suggestion) errors.push(\`Typo: try \${syntax.data.suggestion}\`);
  if (!mx.data.has_mx) errors.push("No MX records");
  if (disp.data.is_disposable) errors.push("Disposable domain");

  return {
    valid: errors.length === 0,
    errors,
    details: { syntax: syntax.data, mx: mx.data, disposable: disp.data },
  };
}

A versão paralela dispara todas as três solicitações simultaneamente usando Promise.all. A latência total é igual à solicitação mais lenta em vez da soma. Na maioria dos casos, todos os três concluído em menos de 100 ms.

Pipeline de validação Python

A mesma validação em três etapas em Python. Este exemplo usa o requests biblioteca para maior clareza.

import requests

API_BASE = "https://api.botoi.com/v1"

def validate_email(email: str) -> dict:
    headers = {"Content-Type": "application/json"}
    payload = {"email": email}

    # Step 1: Syntax + typo check
    syntax = requests.post(
        f"{API_BASE}/email/validate", json=payload, headers=headers
    ).json()

    if not syntax["data"]["format_valid"]:
        return {"valid": False, "reason": "Invalid email format"}

    suggestion = syntax["data"].get("suggestion")
    if suggestion:
        return {"valid": False, "reason": f"Did you mean {suggestion}?"}

    # Step 2: MX record check
    mx = requests.post(
        f"{API_BASE}/email-mx/verify", json=payload, headers=headers
    ).json()

    if not mx["data"]["has_mx"]:
        return {"valid": False, "reason": "Domain cannot receive email"}

    # Step 3: Disposable check
    disp = requests.post(
        f"{API_BASE}/disposable-email/check", json=payload, headers=headers
    ).json()

    if disp["data"]["is_disposable"]:
        provider = disp["data"]["provider"]
        return {"valid": False, "reason": f"Disposable email ({provider})"}

    return {"valid": True, "reason": None}

# Usage
result = validate_email("jamie@gmial.com")
print(result)
# {'valid': False, 'reason': 'Did you mean jamie@gmail.com?'}

Quando validar endereços de e-mail

Diferentes pontos de contato exigem diferentes profundidades de validação. É aqui que cada cheque se encaixa.

Ponto de contato Sintaxe Verificação MX Descartável Por que
Formulário de inscrição Sim Sim Sim Detecte erros de digitação, domínios inativos e contas descartáveis ​​antes de criar um registro
Finalização / pagamento Sim Sim Opcional Os recibos precisam de um endereço de entrega; cheque descartável depende da sua política de reembolso
Formulário de contato Sim Opcional Não A verificação básica do formato evita lixo óbvio; A verificação MX é um bônus
Assinar boletim informativo Sim Sim Sim Protege a reputação do remetente; altas taxas de rejeição fazem com que você seja sinalizado por ESPs
Importação de leads/CRM Sim Sim Sim Limpar os dados antes que eles entrem no pipeline economiza custos posteriores
Ferramentas internas Sim Não Não A verificação de sintaxe detecta erros de entrada de dados; usuários internos são confiáveis

Pontos-chave

  • Valide antes de armazenar. Cada e-mail incorreto em seu banco de dados custa: armazenamento, envios com falha, processamento de devoluções e danos à reputação do remetente. Pegue os problemas na hora de entrada.
  • A detecção de erros de digitação salva os usuários. O /v1/email/validate ponto final detecta erros ortográficos comuns de domínio e retorna uma sugestão. Emergindo "Você quis dizer jamie@gmail.com?" evita a perda de um usuário.
  • As verificações MX são rápidas e gratuitas. As pesquisas de DNS são resolvidas em milissegundos. Há não há razão para ignorá-los. Um endereço sem registros MX nunca receberá seu e-mail.
  • A detecção descartável protege o abuso de julgamento. Se você oferecer uma avaliação gratuita ou plano freemium, a detecção de e-mail descartável impede que a mesma pessoa crie conteúdo ilimitado contas com endereços descartáveis.
  • Nenhuma chave de API é necessária para iniciar. Todos os três endpoints funcionam anonimamente às 5 solicitações por minuto. Teste o pipeline completo sem se inscrever. Adicione um Authorization: Bearer YOUR_KEY cabeçalho quando você precisar de maior rendimento.
  • Execute verificações de velocidade em paralelo. Os três pontos finais são independentes. Usando Promise.all reduz a latência total para a solicitação única mais lenta, em vez de a soma dos três.

A documentação completa para todos os três endpoints está no documentos de API interativos. Cada endpoint aceita um corpo JSON com um email campo e retorna resultados em menos de 100 ms da rede de borda da Cloudflare.

FAQ

Você pode validar um endereço de e-mail sem enviar um e-mail?
Sim. Você pode verificar três coisas sem enviar nada: se o endereço segue uma sintaxe válida (RFC 5322), se o domínio possui registros MX configurados para receber mensagens e se o domínio pertence a um provedor de e-mail descartável conhecido. Essas três verificações detectam a maioria dos endereços incorretos no momento da inscrição.
A API de validação de email do botoi é gratuita?
Sim. O acesso anônimo está disponível a 5 solicitações por minuto com limitação de taxa baseada em IP. Nenhuma chave de API, nenhuma inscrição, nenhum cartão de crédito necessário. Para maior rendimento, os planos pagos começam em US$ 9/mês e incluem acesso a todos os mais de 150 endpoints de API.
Qual é a diferença entre validação de registro MX e verificação SMTP?
A validação do registro MX verifica se um domínio possui servidores de e-mail configurados para aceitar e-mail. Confirma que o domínio pode receber mensagens em geral. A verificação SMTP vai além, conectando-se ao servidor de e-mail e perguntando se existe uma caixa de correio específica. As verificações MX são rápidas (menos de 100 ms) e gratuitas. As verificações de SMTP são mais lentas, podem ser bloqueadas por servidores de e-mail e podem acionar limites de taxa ou sinalizadores de spam.
Quão precisa é a detecção de e-mail descartável?
O endpoint de e-mail descartável botoi verifica mais de 700 domínios descartáveis ​​conhecidos e usa correspondência de padrões para capturar variações (domínios contendo "temp", "lixo", "descartável", etc.). Também distingue entre domínios descartáveis ​​e provedores gratuitos como Gmail ou Outlook. Nenhuma lista de detecção está 100% completa, mas ela abrange todos os serviços descartáveis ​​amplamente utilizados.
Devo validar emails no cliente ou no servidor?
Ambos. Execute uma verificação básica de formato no cliente para obter feedback instantâneo. Execute verificações MX e descartáveis ​​no servidor antes de gravar em seu banco de dados. A validação do lado do cliente melhora a experiência do usuário; a validação do lado do servidor protege seus dados. Nunca confie apenas nas verificações do lado do cliente, pois elas podem ser ignoradas.

Comece a construir com botoi

150+ endpoints de API para consultas, processamento de texto, geração de imagens e utilitários para desenvolvedores. Plano gratuito, sem cartão de crédito.