Check email addresses for bad syntax, typos in the domain (gmial.com -> gmail.com), disposable domains, role addresses, duplicates and domains that do not exist or have no mail server. No API key.
The Clojure version of the free checker at https://bouncelens.com/ - same results. The only network calls are DNS-over-HTTPS lookups (Cloudflare 1.1.1.1) of each domain's MX and A records. It never connects to the recipient's mail server, so it never confirms that a mailbox exists: the best status is :unconfirmed.
(require '[bouncelens.email-check :as ec]) (ec/check-one "jane@gmial.com") ;; => {:status :risky, :did-you-mean "jane@gmail.com", :reasons [...], ...}
Check email addresses for bad syntax, typos in the domain (gmial.com -> gmail.com),
disposable domains, role addresses, duplicates and domains that do not exist or have
no mail server. No API key.
The Clojure version of the free checker at https://bouncelens.com/ - same results.
The only network calls are DNS-over-HTTPS lookups (Cloudflare 1.1.1.1) of each domain's
MX and A records. It never connects to the recipient's mail server, so it never confirms
that a mailbox exists: the best status is :unconfirmed.
(require '[bouncelens.email-check :as ec])
(ec/check-one "jane@gmial.com")
;; => {:status :risky, :did-you-mean "jane@gmail.com", :reasons [...], ...}(check emails)(check emails {:keys [lookup disposable concurrency] :or {concurrency 8}})Check a list of addresses. Each unique domain is looked up once. Results keep the input order. Options: :lookup (fn [domain] -> info), :disposable (set), :concurrency (default 8).
Check a list of addresses. Each unique domain is looked up once. Results keep the input order. Options: :lookup (fn [domain] -> info), :disposable (set), :concurrency (default 8).
(check-one email)(check-one email opts)Check a single address.
Check a single address.
Built-in set of disposable (throwaway) email domains, from github.com/disposable-email-domains (CC0).
Built-in set of disposable (throwaway) email domains, from github.com/disposable-email-domains (CC0).
DNS-over-HTTPS JSON endpoint (Cloudflare 1.1.1.1).
DNS-over-HTTPS JSON endpoint (Cloudflare 1.1.1.1).
(evaluate parsed dns disposable)Check one parsed address against its domain info.
Check one parsed address against its domain info.
(http-fetch url)Default fetch: GET url, returns {:status int :body string}.
Default fetch: GET url, returns {:status int :body string}.
(lookup-domain domain)(lookup-domain domain fetch)Look a domain up once: MX first, then A as the fallback delivery target.
Returns {:exists :null-mx :mx :provider :a-fallback} or {:error msg}.
fetch (optional) replaces the HTTP call, e.g. in tests.
Look a domain up once: MX first, then A as the fallback delivery target.
Returns {:exists :null-mx :mx :provider :a-fallback} or {:error msg}.
`fetch` (optional) replaces the HTTP call, e.g. in tests.(parse-email raw)Normalise one address (trim, strip mailto: and <>, lower-case the domain, IDN -> punycode) and check its syntax. Returns {:input .. :error msg} or {:input :local :domain :email :unicode-local}.
Normalise one address (trim, strip mailto: and <>, lower-case the domain, IDN -> punycode)
and check its syntax. Returns {:input .. :error msg} or {:input :local :domain :email :unicode-local}.(suggest-domain domain)The popular mail domain this one is probably a typo of (gmial.com -> gmail.com), or nil.
The popular mail domain this one is probably a typo of (gmial.com -> gmail.com), or nil.
(summarize results)Count a checked list. invalid + risky + unconfirmed + duplicates = total: a duplicate is only counted as a duplicate when it would otherwise be unconfirmed.
Count a checked list. invalid + risky + unconfirmed + duplicates = total: a duplicate is only counted as a duplicate when it would otherwise be unconfirmed.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |