Aller au contenu
Guide

Valider une adresse email sans envoyer un seul message

| 7 min read

Vérifiez la syntaxe des e-mails, les enregistrements MX et les domaines jetables avec trois appels API. Pas de connexion SMTP, pas d'email de vérification, pas de risque de rebond. API de validation d'e-mail gratuite.

Email inbox with verification badges
Photo by Stephen Phillips on Unsplash

Votre formulaire d'inscription collecte une adresse e-mail. Vous le stockez, envoyez un message de bienvenue et l'e-mail rebondit. L'adresse était une faute de frappe. Ou le domaine n'existe pas. Ou c'était un produit jetable @mailinator.com adresse qui sera morte dans dix minutes. Tu as maintenant une camelote enregistrement dans votre base de données, une réputation d'expéditeur entachée et un utilisateur qui ne reviendra jamais.

La solution traditionnelle consiste à envoyer un e-mail de vérification : "Cliquez sur ce lien pour confirmer votre adresse." Cela fonctionne, mais cela ajoute des frictions. La conversion chute. Et il ne détecte la faute de frappe qu'après vous avez déjà envoyé un message à une mauvaise adresse.

Vous pouvez valider une adresse e-mail avant d'envoyer quoi que ce soit. Syntaxe de vérification de trois appels d'API, MX enregistrements et domaines jetables. L'ensemble du processus prend moins de 200 ms et détecte les problèmes qui causent 90 % des échecs de livraison des e-mails.

Trois couches de validation des e-mails

Chaque couche détecte une classe différente de mauvaise adresse e-mail. Utilisez-les ensemble pour un pipeline de vérification des e-mails, ou choisissez ceux dont vous avez besoin.

  • Validation de la syntaxe. L'adresse suit-elle un format valide ? Le domaine vous avez une faute de frappe connue ? Le /v1/email/validate le point final vérifie la conformité à la RFC 5322, détecte les adresses basées sur les rôles (admin@, support@), et suggère corrections pour les fautes d'orthographe courantes du domaine comme gmial.com ou hotmal.com.
  • Vérification des enregistrements MX. Le domaine peut-il recevoir des e-mails ? Le /v1/email-mx/verify le point de terminaison interroge DNS pour les enregistrements MX et revient à A enregistrements. Si le domaine n'a pas de serveur de messagerie, l'adresse n'est pas livrable ; pas besoin de réessayer va le réparer.
  • Détection d'e-mails jetables. L'adresse provient-elle d'un service jetable ? Le /v1/disposable-email/check vérifications des points de terminaison sur plus de 700 domaines jetables connus et des variations de motifs. Il indique également si le domaine est un fournisseur gratuit (Gmail, Outlook) afin que vous puissiez faire la distinction entre les adresses personnelles et jetables.

Vérifiez la syntaxe des e-mails et détectez les fautes de frappe

La /v1/email/validate le point de terminaison effectue le plus de travail en un seul appel. Il valide format, recherche les enregistrements MX, vérifie les domaines jetables et détecte les fautes de frappe dans les formats populaires. domaines du fournisseur.

Réponse:

L'e-mail jamie@gmial.com a une syntaxe valide, mais le domaine est une faute de frappe. L'API retours is_valid: false car aucun enregistrement MX n'existe pour gmial.com, et il suggère l'adresse corrigée jamie@gmail.com. Afficher cette suggestion dans votre formulaire d'inscription et vous sauvez l'utilisateur d'un compte mort.

Vérifiez les enregistrements MX pour vérifier si l'e-mail est réel

La /v1/email-mx/verify le point final se concentre sur le DNS. Il renvoie la liste complète des MX enregistrements avec des priorités et un deliverable champ qui vous indique si le domaine peut recevoir du courrier.

Réponse:

La deliverable Le champ renvoie l'une des trois valeurs suivantes : "likely" (MX enregistrements trouvés), "unknown" (pas de MX mais un enregistrement A existe, donc le domaine pourrait accepter le courrier), ou "unlikely" (pas d'enregistrements MX et pas d'enregistrements A). Utilisez-le pour l'enregistrement MX validation lorsque vous avez besoin des données DNS brutes.

Détecter les adresses jetables et jetables

La /v1/disposable-email/check le point de terminaison identifie les services de messagerie temporaires. Ces adresses fonctionnent pendant des minutes ou des heures, puis cessent d'accepter le courrier.

Réponse:

La is_free Ce champ sépare les domaines jetables des fournisseurs gratuits. Un Gmail retour d'adresse is_free: true et is_disposable: false. Un mailinateur retour d'adresse is_disposable: true et is_free: false. Ceci la distinction compte; bloquer tous les fournisseurs gratuits bloquerait la majeure partie d’Internet.

Créer un pipeline de validation dans Node.js

Combinez les trois contrôles en une seule fonction. Ce pipeline exécute chaque vérification de manière séquentielle et des courts-circuits dès la première panne.

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

L'approche séquentielle est lisible et se termine tôt. Si la syntaxe échoue, vous ignorez le réseau appels à MX et chèques jetables. Si vous préférez la rapidité plutôt qu'une résiliation anticipée, exécutez tous trois en parallèle :

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 version parallèle déclenche les trois requêtes simultanément en utilisant Promise.all. La latence totale est égale à la requête la plus lente au lieu de la somme. Dans la plupart des cas, les trois terminé en moins de 100 ms.

Pipeline de validation Python

La même validation en trois étapes en Python. Cet exemple utilise le requests bibliothèque pour plus de clarté.

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

Quand valider les adresses e-mail

Différents points de contact nécessitent différentes profondeurs de validation. Voici où se situe chaque chèque.

Point de contact Syntaxe Vérification MX Jetable Pourquoi
Formulaire d'inscription Oui Oui Oui Détectez les fautes de frappe, les domaines morts et les comptes jetables avant de créer un enregistrement
Caisse / paiement Oui Oui Facultative Les reçus nécessitent une adresse de livraison ; le chèque jetable dépend de votre politique de remboursement
Formulaire de contact Oui Facultative Non La vérification de base du format évite les fichiers indésirables évidents ; Le contrôle MX est un bonus
Abonnez-vous à la newsletter Oui Oui Oui Protège la réputation de l'expéditeur ; des taux de rebond élevés vous font signaler par les ESP
Importation de leads / CRM Oui Oui Oui Nettoyer les données avant qu'elles n'entrent dans votre pipeline permet de réduire les coûts en aval
Outils internes Oui Non Non La vérification de la syntaxe détecte les erreurs de saisie de données ; les utilisateurs internes sont dignes de confiance

Points clés

  • Validez avant de stocker. Chaque mauvais email dans votre base de données vous coûte : du stockage, échecs d'envoi, traitement des rebonds et atteinte à la réputation de l'expéditeur. Attrapez les problèmes au point d'entrée.
  • La détection des fautes de frappe sauve les utilisateurs. La /v1/email/validate point final détecte les fautes d'orthographe courantes du domaine et renvoie une suggestion. Faire surface "Voulez-vous dire jamie@gmail.com ?" empêche un utilisateur perdu.
  • Les contrôles MX sont rapides et gratuits. Les recherches DNS sont résolues en millisecondes. Il y a aucune raison de les ignorer. Une adresse sans enregistrement MX ne recevra jamais votre e-mail.
  • La détection jetable protège les abus liés aux essais. Si vous proposez un essai gratuit ou plan freemium, la détection des e-mails jetables empêche la même personne de créer un nombre illimité comptes avec des adresses jetables.
  • Aucune clé API nécessaire pour démarrer. Les trois points de terminaison fonctionnent de manière anonyme à 5 requêtes par minute. Testez le pipeline complet sans vous inscrire. Ajouter un Authorization: Bearer YOUR_KEY en-tête lorsque vous avez besoin d’un débit plus élevé.
  • Exécutez des contrôles de vitesse en parallèle. Les trois points finaux sont indépendants. En utilisant Promise.all réduit la latence totale à la requête la plus lente au lieu de la somme des trois.

La documentation complète pour les trois points de terminaison se trouve dans le documentation API interactive. Chaque point de terminaison accepte un corps JSON avec un email champ et renvoie les résultats dans à moins de 100 ms du réseau périphérique de Cloudflare.

FAQ

Pouvez-vous valider une adresse e-mail sans envoyer d'e-mail ?
Oui. Vous pouvez vérifier trois choses sans rien envoyer : si l'adresse suit une syntaxe valide (RFC 5322), si le domaine possède des enregistrements MX configurés pour recevoir du courrier et si le domaine appartient à un fournisseur de messagerie jetable connu. Ces trois contrôles détectent la majorité des mauvaises adresses au moment de l'inscription.
L'API de validation des e-mails botoi est-elle gratuite ?
Oui. L'accès anonyme est disponible à 5 requêtes par minute avec une limitation de débit basée sur IP. Aucune clé API, aucune inscription, aucune carte de crédit requise. Pour un débit plus élevé, les forfaits payants commencent à 9 $/mois et incluent l'accès à plus de 150 points de terminaison d'API.
Quelle est la différence entre la validation des enregistrements MX et la vérification SMTP ?
La validation des enregistrements MX vérifie si un domaine dispose de serveurs de messagerie configurés pour accepter le courrier électronique. Cela confirme que le domaine peut recevoir du courrier en général. La vérification SMTP va plus loin en se connectant au serveur de messagerie et en demandant si une boîte aux lettres spécifique existe. Les contrôles MX sont rapides (moins de 100 ms) et gratuits. Les vérifications SMTP sont plus lentes, peuvent être bloquées par les serveurs de messagerie et déclencher des limites de débit ou des indicateurs de spam.
Quelle est la précision de la détection des e-mails jetables ?
Le point de terminaison de messagerie jetable botoi vérifie plus de 700 domaines jetables connus et utilise la correspondance de modèles pour détecter les variations (domaines contenant « temp », « trash », « throwaway », etc.). Il fait également la distinction entre les domaines jetables et les fournisseurs gratuits comme Gmail ou Outlook. Aucune liste de détection n’est complète à 100 %, mais elle répertorie tous les services jetables largement utilisés.
Dois-je valider les emails sur le client ou sur le serveur ?
Les deux. Exécutez une vérification de format de base sur le client pour un retour instantané. Exécutez des contrôles MX et jetables sur le serveur avant d'écrire dans votre base de données. La validation côté client améliore l'expérience utilisateur ; la validation côté serveur protège vos données. Ne faites jamais confiance uniquement aux contrôles côté client, car ils peuvent être contournés.

Commencez a construire avec botoi

150+ endpoints API pour la recherche, le traitement de texte, la generation d'images et les utilitaires pour developpeurs. Offre gratuite, sans carte bancaire.