API de verificação de email em Node.js com fetch

Equipe editorial do 1-email.com · Revisado em 9 de outubro de 2026 · Política editorial

Crie uma chamada de verificação no servidor com timeout, chave protegida e classificação explícita de risco.

Baixe e execute localmente

Node.js 22+. Não exige instalar pacotes. Baixe todos os arquivos abaixo na mesma pasta e execute:

node check.mjs

Arquivos de código

verify.mjs Baixar

// Node.js 22+: server code. Only the public sandbox key is supplied by default.
export class VerificationError extends Error {
  constructor(status, message, retryAfter = null) {
    super(message); this.status = status; this.retryAfter = retryAfter;
  }
}
export async function verifyEmail(email, {key = process.env.EEV_API_KEY || 'eev_sandbox_key', fetchFn = fetch} = {}) {
  const url = new URL('https://api.easyemailverification.com/v1/verify');
  url.searchParams.set('email', email);
  let response;
  try {
    response = await fetchFn(url, {
      headers: {'X-API-Key': key, Accept: 'application/json'},
      signal: AbortSignal.timeout(30000)
    });
  } catch {
    throw new VerificationError(503, 'No reliable result; review the request before retrying.');
  }
  if (!response.ok) {
    const messages = {402: 'No credits: check your account before retrying.',
      429: 'Rate limited: wait before another request; respect Retry-After.'};
    throw new VerificationError(response.status, messages[response.status] || 'Verification request failed.', response.headers.get('Retry-After'));
  }
  let data;
  try { data = await response.json(); } catch { throw new VerificationError(502, 'Invalid JSON response.'); }
  if (!data || !['valid','invalid','unknown'].includes(data.result)) {
    throw new VerificationError(502, 'Unexpected API response; do not classify the address.');
  }
  return data;
}
export function classify(data) {
  if (data.result === 'invalid') return 'invalid';
  if (data.result === 'unknown' || data.disposable || data.accept_all || data.safe_to_send !== true) return 'review';
  return 'passed_checks';
}

check.mjs Baixar

import {verifyEmail, classify} from './verify.mjs';
try {
  const data = await verifyEmail(process.argv[2] || 'valid@sandbox.easyemailverification.com');
  console.log(JSON.stringify({decision: classify(data), result: data.result,
    reason: data.reason, did_you_mean: data.did_you_mean}, null, 2));
} catch (error) {
  console.error(`HTTP ${error.status || 503}: ${error.message}`);
  process.exitCode = 1;
}

Teste sucesso, incerteza e falhas

Troque o endereço padrão pelo argumento da linha de comando (Python/Node) ou pelo campo do formulário. Use valid, invalid, unknown, catchall, disposable, quota e ratelimit em sandbox.easyemailverification.com. O caso especial typo@gmial.com fornece uma sugestão de correção.

Espere revisão para unknown e sinais de risco. Falta de créditos deve interromper a chamada com 402; limite de chamadas retorna 429. Falhas de rede ou JSON nunca devem gerar classificação valid ou invalid de uma caixa postal.

Antes de ir para produção

Defina EEV_API_KEY no ambiente do servidor. Mantenha o endpoint fixo, use timeout, limite o tamanho da chamada e adicione controles de abuso. Para cadastro real, adicione proteção de origem/CSRF, limites próprios e gestão de consentimento. Não repita uma chamada incerta automaticamente nem troque um endereço com erro silenciosamente.

Fonte primária: Easy API reference. Baixar instruções dos exemplos.

Pronto para endereços reais?

Nós operamos o Easy Email Verification. Crie uma conta gratuita para obter a chave de produção após testar a integração.

Obter uma chave de produção gratuita