Migrer depuis NeverBounce

Ce guide montre comment remplacer NeverBounce par Mailbeam. La plupart des migrations prennent moins d'une heure.

Pourquoi les développeurs changent

  • Hébergement dans l'UE : NeverBounce est établi aux États-Unis (propriété de ZoomInfo) ; Mailbeam traite les données à Francfort, en Allemagne — aucune question de transfert transfrontalier au sens du RGPD
  • Pas de crédits qui expirent : les crédits NeverBounce expirent au bout de 6 mois ; Mailbeam fonctionne par abonnement mensuel, sans expiration
  • Offre gratuite en libre-service : Mailbeam donne 1 000 vérifications par mois sans carte bancaire ; NeverBounce exige un achat de crédits pour démarrer
  • Verdicts catch-all notés : NeverBounce renvoie un drapeau binaire ; Mailbeam note les adresses catch-all de 0 à 100 à partir de poids publiés, avec un plafond à 70 parce qu'aucune sonde ne peut les confirmer, et un champ de motif explicable

Correspondance des endpoints

NeverBounceMailbeamRemarques
POST /v4/single/checkPOST /v1/verifyVérification d'une adresse
POST /v4/jobs/createPOST /v1/verify/batchVérification d'une liste en masse
GET /v4/account/infoGET /v1/account/usageQuota et consommation

Authentification

NeverBounce utilise l'authentification HTTP Basic, avec la clé d'API en nom d'utilisateur et pas de mot de passe. Mailbeam utilise un jeton Bearer dans l'en-tête Authorization.

NeverBounce (avant) :

curl -X POST https://api.neverbounce.com/v4/single/check \
  -H "Authorization: Basic $(echo -n 'YOUR_KEY:' | base64)" \
  -d '{"email": "user@example.com"}'

Mailbeam (après) :

curl -X POST https://api.mailbeam.dev/v1/verify \
  -H "Authorization: Bearer $MAILBEAM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com"}'

Correspondance des réponses

result de NeverBounceÉquivalent Mailbeam
"valid"valid: true, score >= 70
"invalid"valid: false
"catchall"catchAll: true — décidez avec le score
"disposable"disposable: true
"unknown"status: "unknown", score plus bas

Migration du code

NeverBounce (avant) :

const res = await fetch("https://api.neverbounce.com/v4/single/check", {
  method: "POST",
  headers: { Authorization: `Basic ${btoa(apiKey + ":")}` },
  body: JSON.stringify({ email }),
});
const { result } = await res.json();
if (result !== "valid") return 422;

Mailbeam (après) :

// Pas de SDK à installer — voyez /docs/quickstart pour ce wrapper de 12 lignes.
import { verifyEmail } from "./lib/mailbeam.js";

const { valid, score, reason } = await verifyEmail(email);
if (!valid || score < 60) return 422;

Traiter les adresses catch-all

NeverBounce renvoie result: "catchall" sans autre signal. Mailbeam renvoie catchAll: true, accompagné d'un score de 0 à 100 et d'un reason.

const result = await verifyEmail(email);

if (result.catchAll) {
  // NeverBounce rejetterait tout catch-all — Mailbeam vous laisse trier
  if (result.score >= 70) return 200; // adresse d'entreprise à forte confiance
  if (result.score >= 40) return 200; // acceptée, mais signalée pour relecture
  return 422; // confiance faible, rejet
}

Prochaines étapes