Validation d'un email unique
Validez des adresses email individuelles en temps réel avec des vérifications de syntaxe, de domaine et SMTP
Validez une adresse email en temps réel avant l'envoi. MailLand exécute un pipeline de validation en 5 couches : vérification de la syntaxe, détection de fautes de frappe, détection de domaines jetables, détection de comptes de rôle et vérification SMTP.
Authentification
Incluez votre clé API dans l'en-tête X-API-Key :
X-API-Key: ml_pv_Ab3Kx9mN2pQ7rT4wL8yD...L'identifiant doit être un identifiant produit Validation avec le canal Api activé.
Valider un email
POST https://api.mail.land/v1/validation/email{
"email": "[email protected]",
"verify_smtp": true
}| Champ | Type | Défaut | Description |
|---|---|---|---|
email | string | - | Adresse email à valider (obligatoire) |
verify_smtp | bool | true | Effectuer la vérification SMTP de la boîte aux lettres |
curl -X POST https://api.mail.land/v1/validation/email \
-H "X-API-Key: ml_pv_Ab3Kx9mN2pQ7rT4wL8yD..." \
-H "Content-Type: application/json" \
-d '{ "email": "[email protected]", "verify_smtp": true }'Réponse
{
"email": "[email protected]",
"result": "Deliverable",
"score": 95,
"syntax": {
"is_valid": true,
"suggestion": null,
"domain": "example.com",
"local_part": "user",
"has_typo": false,
"typo_type": null,
"typo_confidence": null
},
"disposable": {
"is_disposable": false
},
"role": {
"is_role_account": false
},
"mx": {
"has_mx": true,
"records": ["mx1.example.com", "mx2.example.com"],
"accepts_mail": true
},
"smtp": {
"can_connect": true,
"is_deliverable": true,
"is_catch_all": false,
"has_full_inbox": false,
"is_disabled": false,
"reachability": "safe",
"error_type": null,
"error_message": null
},
"provider": {
"name": "Unknown",
"type": "unknown"
},
"cached": false,
"verified_at": "2026-02-17T12:34:56Z"
}Types de résultats
| Résultat | Plage de score | Description |
|---|---|---|
Deliverable | 80–95 | Adresse valide, livraison SMTP confirmée |
Risky | 45–70 | Potentiellement livrable mais avec des facteurs de risque (catch-all, compte de rôle, boîte pleine) |
Unknown | 30–50 | Impossible à déterminer (timeout SMTP, échec de connexion) |
Undeliverable | 0–25 | Non livrable (jetable, pas de MX, boîte aux lettres désactivée ; syntaxe invalide = 0) |
Invalid | 5 (fixe) | Faute de frappe de domaine à haute confiance (≥90 %), voir syntax.suggestion |
Ajustements du score
Le score de base est ajusté selon les facteurs de risque :
| Facteur | Ajustement |
|---|---|
| Compte de rôle (info@, admin@, etc.) | -10 |
| Serveur catch-all | -5 |
Pipeline de validation
MailLand valide chaque email à travers 5 couches :
Validation de la syntaxe
Vérifie la conformité RFC 5322 : format valide, partie locale (max 64 caractères), domaine (max 255 caractères), longueur totale (max 320 caractères). Détecte également les fautes de frappe courantes sur les domaines.
Vérification des domaines jetables
Vérifie le domaine dans une base de données de fournisseurs d'emails temporaires/jetables connus. Les adresses jetables sont immédiatement marquées comme Undeliverable.
Vérification des comptes de rôle
Détecte les adresses basées sur des rôles comme info@, admin@, support@, postmaster@. Les comptes de rôle ne sont pas marqués comme non livrables mais réduisent le score de confiance.
Validation des enregistrements MX
Recherche les enregistrements MX du domaine. Si aucun enregistrement MX ni enregistrement A n'existe, l'email est marqué comme Undeliverable.
Vérification SMTP
Se connecte au serveur de messagerie et vérifie si la boîte aux lettres existe. Cette étape est ignorée si verify_smtp est false.
Détection des fautes de frappe
MailLand utilise une détection de fautes de frappe en 3 couches pour les erreurs courantes de domaine :
| Couche | Méthode | Exemple |
|---|---|---|
| Correspondance exacte | Base de données de fautes connues | gmial.com → gmail.com |
| Correction du TLD | Variantes de domaine de premier niveau | gmail.co → gmail.com |
| Distance de Levenshtein | Correspondance approximative (distance max : 2) | gmal.com → gmail.com |
Lorsqu'une faute de frappe est détectée, le champ syntax.suggestion contient l'adresse corrigée :
{
"email": "[email protected]",
"result": "Invalid",
"score": 5,
"syntax": {
"is_valid": true,
"suggestion": "[email protected]",
"domain": "gmial.com",
"local_part": "user",
"has_typo": true,
"typo_type": "levenshtein",
"typo_confidence": 95
}
}Les fautes de frappe à haute confiance (90%+ de confiance) sont court-circuitées en amont du pipeline : aucune vérification SMTP n'est effectuée et aucun crédit n'est consommé.
Détection du fournisseur
MailLand identifie le fournisseur d'email à partir des noms de domaine et des enregistrements MX :
| Fournisseur | Type | Détection |
|---|---|---|
| Gmail | consumer | Correspondance de domaine |
| Outlook / Hotmail / Live | consumer | Correspondance de domaine |
| Yahoo | consumer | Correspondance de domaine |
| iCloud | consumer | Correspondance de domaine |
| ProtonMail | consumer | Correspondance de domaine |
| Google Workspace | business | Enregistrements MX (aspmx) |
| Microsoft 365 | business | Enregistrements MX (outlook.com) |
| Zoho | business | Enregistrements MX |
| Mimecast | business | Enregistrements MX |
| Proofpoint | business | Enregistrements MX |
Détails de la vérification SMTP
L'objet smtp contient les résultats détaillés de la vérification SMTP :
| Champ | Type | Description |
|---|---|---|
can_connect | bool | Connexion réussie au serveur SMTP |
is_deliverable | bool | La boîte aux lettres semble exister |
is_catch_all | bool | Le serveur accepte toutes les adresses (réduit la confiance) |
has_full_inbox | bool | La boîte aux lettres est pleine (résultat : Risky) |
is_disabled | bool | La boîte aux lettres est désactivée (résultat : Undeliverable) |
reachability | string | Verdict : safe, risky, invalid ou unknown |
error_type | string | Type d'erreur si la vérification SMTP a échoué |
error_message | string | Message d'erreur détaillé |
Types d'erreurs SMTP
| Type d'erreur | Description |
|---|---|
Timeout | Expiration de la connexion SMTP |
ConnectionFailed | Impossible de se connecter au serveur |
Blacklisted | L'IP de vérification est bloquée par le serveur |
Socks5 | Erreur de proxy |
AsyncSmtpError | Erreur de protocole SMTP |
Cancelled | Requête annulée |
UnexpectedError | Erreur inattendue |
Crédits
Chaque validation consomme un crédit de votre quota mensuel. Certaines validations sont gratuites (aucun crédit consommé) :
| Condition | Gratuit |
|---|---|
| Domaines d'emails jetables | Oui |
| Fautes de frappe de domaine à haute confiance (90%+) | Oui |
| Erreurs SMTP (timeout, échec de connexion, blocage) | Oui |
| SMTP impossible de se connecter avec résultat inconnu | Oui |
| Résultats en cache | Non (le crédit a été consommé lors de la première vérification) |
Vérifiez votre solde de crédits :
GET https://api.mail.land/v1/validation/credits{
"monthly_quota": 1000,
"used": 450,
"remaining": 550,
"resets_at": "2026-03-01T00:00:00Z"
}Les crédits se réinitialisent automatiquement le premier jour de chaque mois (UTC).
Mise en cache
Les résultats de validation sont mis en cache dans Redis pour éviter les vérifications redondantes :
| Type de résultat | Durée du cache |
|---|---|
| Deliverable | 48 heures |
| Risky | 24 heures |
| Undeliverable | 24 heures |
| Unknown | 6 heures |
Les réponses en cache ont cached: true dans la réponse. Le crédit original a été consommé lors du premier calcul du résultat.
Réponses d'erreur
| Statut | Code | Description |
|---|---|---|
400 | INVALID_REQUEST | Corps de requête manquant ou invalide |
400 | INVALID_EMAIL_FORMAT | L'adresse email est requise |
402 | INSUFFICIENT_CREDITS | Quota mensuel de validation dépassé |
Prochaines étapes
- Validation par lot : validez des listes d'emails en masse
- Suppressions : gérez les listes de suppression
- API REST : envoyez des emails aux adresses validées