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)
| File | Size | Uploaded | |
|---|---|---|---|
| mailspot-0.1.0.tar.gz | 51.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|