Skip to main content

mailspot

Find and verify work email addresses. No API keys needed.

Two things:

  • Verify an address: is it well-formed, does the domain take mail, and does the mailbox look real?
  • Find someone's address from their name and company domain.

You get back a confidence score and a suggested action (send, verify_first, skip, unknown) instead of a bare yes/no, because the honest answer is usually "probably."

import mailspot

result = await mailspot.verify("jane.doe@acme.com")
print(result.decision, result.confidence)   # send 94

guess = await mailspot.find("Jane Doe", "acme.com")
print(guess.best.email)                      # jane.doe@acme.com
$ mailspot verify jane.doe@acme.com
jane.doe@acme.com  valid  send  94  the server accepted the mailbox on a domain that is not accept-all

$ mailspot find --name "Jane Doe" --domain acme.com
jane.doe@acme.com  94  via permutation

$ mailspot suggest jane@gmial.com
jane@gmail.com

Other commands: mailspot canonical, mailspot bulk verify in.csv --column email --out out.csv, and mailspot bulk recheck out.csv. Every command takes --json.

Most existing packages only verify a single address, run synchronously, and quietly lie about catch-all domains. mailspot finds and verifies, runs checks concurrently, is provider-aware (it won't report a confident "valid" from Gmail or Outlook, which accept every probe), and is honest when it can't be sure.

Not on PyPI yet.

SMTP is best-effort

Port 25 is blocked on most clouds and a lot of ISPs, and Google/Microsoft greylist probes. When mailspot can't get a straight answer over SMTP it says so in the result and falls back to what it does know (syntax, MX, catch-all, pattern). It won't make up certainty it doesn't have.

Using it responsibly

mailspot does DNS and SMTP lookups you ask for, against domains you pick. It ships no contact data and collects nothing on its own. If you process data about real people you have obligations under GDPR, CAN-SPAM and the like. That's on you, the operator. The defaults are polite (bounded concurrency, per-domain rate limiting, timeouts); leave them that way unless you have a reason not to.

License

MIT.

Metadata

Release files for mailspot 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mailspot 0.1.0
File Size Uploaded
mailspot-0.1.0.tar.gz 51.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mailspot 0.1.0
File Interpreter ABI Platform
mailspot-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 82.1 kB

Release files / mailspot-0.1.0.tar.gz

Download URL mailspot-0.1.0.tar.gz
Size 51.9 kB
Tags Source
SHA-256 checksum
How to use checksums
33449faf5227cdb220168dbb641c4faea667e42edf310a99f63f2a3e3cc056eb
BLAKE2b-256 checksum
How to use checksums
5d59e6a6912dd0b818a68dfaff11181208580442baec5709d035ca51f5d4ed3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.8

Release files / mailspot-0.1.0-py3-none-any.whl

Download URL mailspot-0.1.0-py3-none-any.whl
Size 30.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ac7366996763768ca3204cfd06912c3dd57f49aac72a3e93f17c8e3fba76088b
BLAKE2b-256 checksum
How to use checksums
4f92ce8344c9c10c158f410c7919e3c252a54b42d5b536afe97d2f27333245b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.8

Release history Release notifications | RSS feed

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page