
Reacher
Checks whether an email address exists, without sending it an email, using a Rust library, CLI, or HTTP backenreacherhq/check-if-email-exists
- Stars
- 10.4k
- Forks
- 771
- Licence
- MIT
- Language
- Rust
- Last update
- 7 days ago
- Type
- Library
What it is
check-if-email-exists tests whether an email address looks real and can receive mail, without sending a message to it. It checks syntax, the domain's mail records, whether the mail server responds, and extra signals like disposable or role-based addresses. It is written in Rust and can be used as a command-line tool, a Docker-run HTTP backend, or a Rust library.
- Check a single address from the command line with the CLI binary
- Run the Docker HTTP backend and send POST requests to /v0/check_email
- Call check_email from a Rust program and read the returned result
- Flag disposable or role-based addresses such as info@ in a signup flow
Great for
- Developers adding email validation to a sign-up form or data pipeline
- Teams cleaning mailing lists before a campaign
- Engineers who want a self-hosted email verification service
- Rust developers who need an email check inside their own program
Not ideal for
- People who only need a simple syntax check, since a regex or basic library is enough for that
- Anyone expecting results to be perfect, because SMTP checks depend on how each mail provider responds
- Users on hosts that block outbound port 25, since the README says the Docker backend requires it
How to get it
- 1
Run with Docker
You'll need: Docker
Run the HTTP backend with Docker
docker run -p 8080:8080 reacherhq/backend:latest - 2
Run it
- Start the backend with the docker run command above
- Send a POST request to http://localhost:8080/v0/check_email with a JSON body containing to_email
- Read the JSON response, focusing on is_reachable
- Optionally add a proxy object to the request body if you use an SMTP proxy
- 3
Get the most out of it
- Use the proxy field in the request body to route checks through an SMTP proxy, as the README recommends for higher volumes
- Read the is_reachable value alongside the detailed smtp and misc fields rather than relying on one number
- Add the Rust crate to a project and call check_email directly if you do not need a server
- Check the docs.rs reference for the full CheckEmailOutput struct
Downloads
Strengths
- Does not send an email to the address being checked
- Offers several ways to use it: CLI, HTTP backend, and Rust library
- Returns detailed JSON fields such as is_reachable, syntax, mx, and smtp results
Trade-offs
- The README says larger volumes need SMTP proxy servers, which are a separate paid service it recommends
- Some checks listed in the README are still marked as planned, not finished
- The README is truncated, so details of some features and limits are unclear
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| check-if-email-exists (this) | 10.4k | Library | intermediate | 7 days ago | Developers adding email validation to a sign-up form or data pipeline |
| react-email | 19.9k | Library | beginner | 6 days ago | Developers who already build web apps with React and want to write email templates the same way |
| EmailValidator | 11.6k | Library | beginner | 4 days ago | PHP developers adding email checks to sign-up or contact forms |
| frappe | 11k | Library | advanced | 4 days ago | Developers building business or internal data-heavy applications |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.