Valider une adresse email sans envoyer un seul message
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.
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/validatele 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 commegmial.comouhotmal.com. -
Vérification des enregistrements MX. Le domaine peut-il recevoir des e-mails ? Le
/v1/email-mx/verifyle 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/checkvé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/validatepoint 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_KEYen-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.allré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.