Ir al contenido
Guide

Validar una dirección de correo electrónico sin enviar un solo mensaje

| 7 min read

Verifique la sintaxis del correo electrónico, los registros MX y los dominios desechables con tres llamadas API. Sin conexión SMTP, sin correo electrónico de verificación, sin riesgo de rebote. API de validación de correo electrónico gratuita.

Email inbox with verification badges
Photo by Stephen Phillips on Unsplash

Su formulario de registro recopila una dirección de correo electrónico. Lo guardas, envías un mensaje de bienvenida y el correo electrónico rebota. La dirección fue un error tipográfico. O el dominio no existe. O fue algo desechable @mailinator.com Dirección que estará muerta en diez minutos. Ahora tienes una basura registro en su base de datos, una reputación de remitente dañada y un usuario que nunca volverá.

La solución tradicional es enviar un correo electrónico de verificación: "Haga clic en este enlace para confirmar su dirección". Funciona, pero añade fricción. La conversión cae. Y no detecta el error tipográfico hasta después. ya has enviado un mensaje a una dirección incorrecta.

Puede validar una dirección de correo electrónico antes de enviar cualquier cosa. Tres llamadas API verifican la sintaxis, MX registros y dominios desechables. Todo el proceso dura menos de 200 ms y detecta los problemas. que causan el 90% de las fallas en la entrega de correo electrónico.

Tres capas de validación de correo electrónico

Cada capa detecta una clase diferente de dirección de correo electrónico incorrecta. Úselos juntos para una completa canal de verificación de correo electrónico, o elija los que necesite.

  • Validación de sintaxis. ¿La dirección sigue un formato válido? ¿El dominio ¿Tiene un error tipográfico conocido? El /v1/email/validate el punto final verifica el cumplimiento de RFC 5322, detecta direcciones basadas en roles (admin@, support@), y sugiere correcciones para errores ortográficos comunes en dominios como gmial.com o hotmal.com.
  • Verificación de registros MX. ¿Puede el dominio recibir correo electrónico? El /v1/email-mx/verify El punto final consulta DNS para registros MX y recurre a A registros. Si el dominio no tiene servidor de correo, la dirección no se puede entregar; no hay cantidad de reintentos lo arreglará.
  • Detección de correo electrónico desechable. ¿La dirección es de un servicio desechable? El /v1/disposable-email/check verificaciones de puntos finales contra más de 700 dominios desechables conocidos y variaciones de coincidencias de patrones. También indica si el dominio es un proveedor gratuito (Gmail, Outlook) para que puedas distinguir entre direcciones personales y desechables.

Verifique la sintaxis del correo electrónico y detecte errores tipográficos

La /v1/email/validate El punto final hace la mayor parte del trabajo en una sola llamada. valida formato, busca registros MX, busca dominios desechables y detecta errores tipográficos en populares dominios del proveedor.

Respuesta:

el correo electrónico jamie@gmial.com tiene una sintaxis válida, pero el dominio es un error tipográfico. La API regresa is_valid: false porque no existen registros MX para gmial.com, y sugiere la dirección corregida jamie@gmail.com. Muestra esta sugerencia en su formulario de registro y salva al usuario de una cuenta muerta.

Verifique los registros MX para comprobar si el correo electrónico es real

La /v1/email-mx/verify El punto final se centra en DNS. Devuelve la lista completa de MX. registros con prioridades y un deliverable campo que le indica si el dominio puede recibir correo.

Respuesta:

La deliverable El campo devuelve uno de tres valores: "likely" (MX registros encontrados), "unknown" (no existe ningún registro MX pero sí A, por lo que el dominio podría aceptar correo), o "unlikely" (sin registros MX ni A). Utilice esto para el registro MX validación cuando necesite los datos DNS sin procesar.

Detectar direcciones desechables y desechables

La /v1/disposable-email/check El punto final identifica servicios de correo electrónico temporales. Estas direcciones funcionan durante minutos u horas y luego dejan de aceptar correo.

Respuesta:

La is_free El campo separa los dominios desechables de los proveedores gratuitos. Un Gmail devoluciones de direcciones is_free: true y is_disposable: false. Un mailinador devoluciones de direcciones is_disposable: true y is_free: false. esto la distinción importa; bloquear todos los proveedores gratuitos bloquearía la mayor parte de Internet.

Cree una canalización de validación en Node.js

Combine los tres controles en una sola función. Esta canalización ejecuta cada verificación de forma secuencial. y cortocircuitos en el primer fallo.

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

El enfoque secuencial es legible y sale temprano. Si la sintaxis falla, te saltas la red Solicita cheques MX y desechables. Si prefiere la velocidad a la terminación anticipada, ejecute todos tres en 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 },
  };
}

La versión paralela dispara las tres solicitudes simultáneamente usando Promise.all. La latencia total equivale a la solicitud más lenta en lugar de a la suma. En la mayoría de los casos, los tres completar en menos de 100 ms.

Canal de validación de Python

La misma validación de tres pasos en Python. Este ejemplo utiliza el requests biblioteca para mayor claridad.

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?'}

Cuándo validar direcciones de correo electrónico

Diferentes puntos de contacto requieren diferentes profundidades de validación. Aquí es donde encaja cada cheque.

Punto de contacto Sintaxis cheque MX Desechable Por qué
Formulario de registro Detecte errores tipográficos, dominios inactivos y cuentas desechables antes de crear un registro
Caja/pago Opcional Los recibos necesitan una dirección de entrega; El cheque desechable depende de su política de reembolso.
Formulario de contacto Opcional No La verificación de formato básica evita basura obvia; El cheque MX es una ventaja
Suscríbete al boletín Protege la reputación del remitente; Las altas tasas de rebote hacen que los ESP lo marquen
Importación de leads / CRM Limpiar los datos antes de que entren en su canalización ahorra costos posteriores
Herramientas internas No No La verificación de sintaxis detecta errores de entrada de datos; los usuarios internos son de confianza

Puntos clave

  • Validar antes de almacenar. Cada correo electrónico incorrecto en su base de datos le cuesta: almacenamiento, envíos fallidos, procesamiento de rebotes y daños a la reputación del remitente. Detectar problemas en el punto de entrada.
  • La detección de errores tipográficos salva a las usuarias. La /v1/email/validate punto final detecta errores ortográficos comunes en el dominio y devuelve una sugerencia. Saliendo a la superficie "¿Quiso decir ¿jamie@gmail.com?" previene la pérdida de un usuario.
  • Los controles MX son rápidos y gratuitos. Las búsquedas de DNS se resuelven en milisegundos. hay no hay razón para omitirlos. Una dirección sin registros MX nunca recibirá su correo electrónico.
  • La detección desechable protege el abuso de prueba. Si ofreces una prueba gratuita o plan freemium, la detección de correo electrónico desechable impide que la misma persona cree ilimitados cuentas con direcciones desechables.
  • No se necesita clave API para comenzar. Los tres puntos finales funcionan de forma anónima a las 5 solicitudes por minuto. Pruebe el proceso completo sin registrarse. Añadir un Authorization: Bearer YOUR_KEY encabezado cuando necesite un mayor rendimiento.
  • Realice comprobaciones de velocidad en paralelo. Los tres puntos finales son independientes. Usando Promise.all reduce la latencia total a la solicitud única más lenta en lugar de la suma de los tres.

La documentación completa para los tres puntos finales se encuentra en el documentos API interactivos. Cada punto final acepta un cuerpo JSON con un email campo y devuelve resultados en a menos de 100 ms de la red perimetral de Cloudflare.

FAQ

¿Se puede validar una dirección de correo electrónico sin enviar un correo electrónico?
Sí. Puedes verificar tres cosas sin enviar nada: si la dirección sigue una sintaxis válida (RFC 5322), si el dominio tiene registros MX configurados para recibir correo y si el dominio pertenece a un proveedor de correo electrónico desechable conocido. Estas tres comprobaciones detectan la mayoría de las direcciones incorrectas en el momento del registro.
¿La API de validación de correo electrónico de Botoi es gratuita?
Sí. El acceso anónimo está disponible a 5 solicitudes por minuto con limitación de velocidad basada en IP. Sin clave API, sin registro, no se requiere tarjeta de crédito. Para un mayor rendimiento, los planes pagos comienzan en $9/mes e incluyen acceso a más de 150 puntos finales API.
¿Cuál es la diferencia entre la validación de registros MX y la verificación SMTP?
La validación de registros MX verifica si un dominio tiene servidores de correo configurados para aceptar correo electrónico. Confirma que el dominio puede recibir correo en general. La verificación SMTP va más allá al conectarse al servidor de correo y preguntar si existe un buzón específico. Las comprobaciones MX son rápidas (menos de 100 ms) y gratuitas. Las comprobaciones SMTP son más lentas, los servidores de correo pueden bloquearlas y pueden activar límites de velocidad o indicadores de spam.
¿Qué tan precisa es la detección de correo electrónico desechable?
El punto final de correo electrónico desechable de botoi verifica más de 700 dominios desechables conocidos y utiliza la coincidencia de patrones para detectar variaciones (dominios que contienen "temp", "basura", "desechable", etc.). También distingue entre dominios desechables y proveedores gratuitos como Gmail o Outlook. Ninguna lista de detección está 100% completa, pero captura todos los servicios desechables más utilizados.
¿Debo validar los correos electrónicos en el cliente o en el servidor?
Ambos. Ejecute una verificación de formato básica en el cliente para obtener comentarios instantáneos. Ejecute MX y comprobaciones desechables en el servidor antes de escribir en su base de datos. La validación del lado del cliente mejora la experiencia del usuario; La validación del lado del servidor protege sus datos. Nunca confíe únicamente en las comprobaciones del lado del cliente porque pueden pasarse por alto.

Empieza a construir con botoi

150+ endpoints de API para consultas, procesamiento de texto, generacion de imagenes y utilidades para desarrolladores. Plan gratuito, sin tarjeta de credito.