@visulima/email-verifier
v1.0.49
Published
Email verification and enrichment: syntax, MX/SMTP probing, disposable and role detection, catch-all, and a 0–100 quality score.
Maintainers
Readme
@visulima/email-verifier validates and enriches an email address without
pulling in a mail-sending stack. It mirrors the surface of commercial APIs like
emailable: syntax + domain + SMTP verification,
catch-all / mailbox-full / greylist handling, disposable / free / role / no-reply
detection, sub-address (tag) parsing, character & Unicode-symbol analysis,
provider & Secure-Email-Gateway classification, misspelled-domain suggestions,
name parsing, and a transparent 0–100 quality score — all aggregated into one
EmailVerificationReport.
It is mailer-free: it does not depend on
@visulima/email, so a validation-only consumer never installs the 25 provider adapters.
Install
npm install @visulima/email-verifieryarn add @visulima/email-verifierpnpm add @visulima/email-verifierUsage
import { verifyEmail } from "@visulima/email-verifier";
const report = await verifyEmail("[email protected]");
report.state; // "deliverable" | "risky" | "undeliverable" | "unknown"
report.reason; // e.g. "accepted_email"
report.score; // 0–100
report.free; // true
report.provider?.display; // "Google"
report.name; // { firstName: "John", lastName: "Doe", fullName: "John Doe", confidence: "high" }Network caveat: SMTP verification connects to the recipient's mail server on port 25. Many networks block outbound 25 and many servers tarpit or refuse verification probes, so treat a
deferred/unknownresult as inconclusive rather than undeliverable. Pass{ offline: true }to skip all network checks.
À la carte checks
Every check and enrichment is also exported on its own subpath so you only pull in what you need:
import { validateSyntax } from "@visulima/email-verifier/checks/syntax";
import { checkMxRecords } from "@visulima/email-verifier/checks/mx";
import { verifySmtp } from "@visulima/email-verifier/checks/smtp";
import { checkDisposable } from "@visulima/email-verifier/checks/disposable";
import { checkFree } from "@visulima/email-verifier/checks/free";
import { isRoleAccount, isNoReply } from "@visulima/email-verifier/checks/role";
import { detectTag } from "@visulima/email-verifier/checks/tag";
import { analyzeCharacters } from "@visulima/email-verifier/checks/character";
import { analyzeSymbols } from "@visulima/email-verifier/checks/symbol";
import { enrichProvider } from "@visulima/email-verifier/enrich/provider";
import { suggestEmailTypo } from "@visulima/email-verifier/enrich/typo";
import { parseName } from "@visulima/email-verifier/enrich/name";
import { scoreReport } from "@visulima/email-verifier/score";Scoring
The score is a transparent additive model over a 100-point baseline. Every weight is overridable:
import { verifyEmail } from "@visulima/email-verifier";
const report = await verifyEmail("[email protected]", {
weights: { role: 40, free: 0 },
});Related
@visulima/disposable-email-domains— disposable-domain list (used bychecks/disposable).@visulima/free-email-domains— free-provider domain list (used bychecks/free).@visulima/email-provider-mx— MX-host → provider/SEG map (used byenrich/provider).@visulima/email— the mail-sending library (send-side validation only).
Supported Node.js Versions
Libraries in this ecosystem make the best effort to track Node.js' release schedule.
Contributing
If you would like to help take a look at the list of issues and check our Contributing guidelines.
Credits
License
The visulima email-verifier is open-sourced software licensed under the MIT
