EN
Copied
Modules

Vérification emails

Vérification emails

Le module verify_emails valide la délivrabilité d'une liste d'adresses email avant l'envoi d'une campagne. Il vérifie la syntaxe, résout les enregistrements MX, ouvre une sonde contre le serveur récepteur, et signale les adresses jetables ou en forme de boîte générique de fonction.

Il s'exécute après une étape d'enrichissement ayant produit des emails, ou contre une liste importée. Le job est parallèle : il ne consomme pas de slot sur la file multi-proxy et peut tourner en même temps que des jobs d'extraction.

Les domaines jetables et alias sont détectés, y compris les fournisseurs modernes (Apple, DuckDuckGo, ProtonMail) que des outils similaires rejettent à tort. Les domaines catch-all sont remontés comme cas où la délivrabilité ne peut être garantie.

Inputs

Champ Requis Source
email oui issu d'un job emails précédent, ou importé
nom non transmis en passe-plat vers la sortie
telephone non transmis en passe-plat
site_web non transmis en passe-plat

needs: ['email']. Les items sans @ sont écartés à la création du job. La déduplication se fait sur l'adresse en minuscules. Le job accepte entre 1 et 10000 items par appel.

source_job_id est optionnel et pointe vers le job emails dont la sortie est vérifiée. L'UI expose ce sélecteur en from_jobs_of_type: 'emails'.

Outputs

Le job produit un rapport de vérification. Chaque ligne porte l'adresse vérifiée, le verdict, et un passe-plat des champs d'identification de l'entrée.

Colonne Type Signification
email string Adresse en minuscules telle que soumise
status string Verdict de délivrabilité (voir valeurs ci-dessous)
category string Comment le verdict a été obtenu : smtp, syntax, disposable, suspect, big_provider, no_mx, error
reason string Explication lisible du verdict
suggested_fix string Correction suggérée en cas de typo évidente, si détectée (optionnel)
smtp_code string Code de réponse SMTP brut de la sonde, si un check SMTP a eu lieu
catch_all string yes / no / unknown — le domaine accepte-t-il n'importe quelle adresse
nom string Transmis depuis l'entrée
telephone string Transmis depuis l'entrée
site_web string Transmis depuis l'entrée

status prend l'une des valeurs :

Valeur Signification
valid Le serveur récepteur a accepté l'adresse — délivrable
valid_catch_all Accepté, mais le domaine est catch-all : l'acceptation n'est pas une garantie
invalid Le serveur a rejeté l'adresse — ne pas envoyer
greylisted Différé temporairement par le serveur ; réessayable plus tard
unknown Indéterminable (timeout, sonde bloquée…)
filtered Rejeté avant l'étape SMTP — syntaxe, jetable, rôle/suspect, ou pas de MX (voir category)
skipped Gros fournisseur gratuit (Gmail, Outlook…) qui rejette les sondes ; considéré délivrable

Les colonnes de signal (status, category) sont déclarées dans le registre des modules sous produces. Ce sont les colonnes sur lesquelles les campagnes et les nœuds filter / sort aval peuvent brancher.

Cycle de vie

États de job standard — voir Cycle de vie des jobs. La progression est rapportée par email (progress_unit: 'emails').

Pipeline

Le module déclare le contrat suivant :

Propriété Valeur
needs email
produces status, category
category verify
pipelinable true
supports_veille false

Dans un pipeline, verify_emails accepte tout nœud amont qui émet email (typiquement emails ou import). Sa sortie verified peut alimenter un nœud filter ou sort en aval — filtrez sur status pour ne garder que les lignes délivrables (ex. statusvalid, valid_catch_all). Les nœuds d'enrichissement ne peuvent pas s'exécuter après verify_emails : le rapport de vérif ne porte pas les colonnes POI complètes qu'ils requièrent.

Endpoints

Créer un job

POST /api/jobs/verify-emails

Body :

{
  "items": [
    { "email": "alex@example.com", "nom": "Alex", "site_web": "https://example.com" },
    { "email": "contact@example.org" }
  ],
  "source_job_id": "f3c2…"
}

source_job_id est optionnel. items est requis, avec au moins un enregistrement et au plus 10000.

Réponse : JobPublic (l'enveloppe de job standard).

Lire un job

Les endpoints de job standard s'appliquent :

GET  /api/jobs/{id}
GET  /api/jobs/{id}/events     # flux SSE
GET  /api/jobs/{id}/download   # CSV

Pour les caps par job et par compte, voir Limites. Le débit est limité à environ cinq vérifications par seconde pour que l'IP sortante ne soit pas flaggée par les fournisseurs mail. Concurrence : le job tourne sur le pool de workers parallèle ; un verify_emails ne bloque jamais un scraping et n'est jamais bloqué par lui.

Erreurs

Code Condition
400 Aucun email valide dans la listeitems vide, toutes les entrées sans @, ou toutes en doublon
400 Quota dépassé — coût estimé supérieur à MAX_EF_PER_JOB
401 L'appelant n'est pas un utilisateur actif
422 Le payload ne correspond pas à VerifyEmailsJobCreateRequest

Les échecs par item (timeout MX, sonde SMTP refusée, etc.) ne font pas échouer le job. La ligne est écrite avec status = unknown et le job avance.

Pour aller plus loin