# Verify Email Address Without Sending in 2026 | ContactLint

- **Canonical URL**: https://contactlint.com/verify-email-address-without-sending
- **Author**: John Alewine

> Verify an email address without sending email: what syntax, MX, disposable and SMTP checks prove, copy-paste commands, and when to pay for a verifier.

---

[Home](/) / How to Verify an Email Address Without Sending an Email: What Each Free Method Proves in 2026

# How to Verify an Email Address Without Sending an Email: What Each Free Method Proves in 2026

Published November 1, 2026 · Updated November 1, 2026

[Email this to yourself](mailto:?subject=How%20to%20Verify%20an%20Email%20Address%20Without%20Sending%20an%20Email%3A%20What%20Each%20Free%20Method%20Proves%20in%202026&body=https%3A%2F%2Fcontactlint.com%2Fverify-email-address-without-sending)

By [John Alewine](https://www.linkedin.com/in/johnalewine/), founder of ContactLint ([LinkedIn](https://www.linkedin.com/in/johnalewine/)). Pages checked November 1, 2026. Markdown copy: [/verify-email-address-without-sending.md](/verify-email-address-without-sending.md).

## Can you verify an email address without sending an email?

You verify an email address without sending email by checking syntax, MX records and disposable or role lists, or asking the server over SMTP. Under [RFC 5321](https://www.rfc-editor.org/rfc/rfc5321), reply 252 means the server cannot verify the user but will accept mail, so it proves nothing. The trade-off: free checks prove a domain takes mail, not that someone reads the inbox.

Bottom line

- Pick free DNS and list checks (syntax, MX, disposable, role) if you need to stop typos and dead domains at signup, during an import, or before an agent saves a contact.

- Pick a paid mailbox verifier if you are about to mail an old list and want a per-mailbox guess, and you can live with "unknown" on catch-all domains.

- Skip manual telnet probes unless you are debugging a mail server you run.

On this page: [Key facts](#key-facts) · [What each method proves](#what-each-method-can-prove) · [Our data](#our-data-what-24-ranking-pages-tell-you) · [Check by hand](#how-to-check-an-email-address-by-hand) · [AI agents](#if-an-ai-agent-checks-the-address) · [Step by step](#how-to-verify-an-email-address-without-s) · [Costly mistakes](#mistakes-that-cost-the-most) · [Who this is not for](#who-this-is-not-for) · [FAQ](#faq) · [Changelog](#changelog)

This guide is for developers, founders and marketers who want an answer before they hit send. You can test any address right now with our [free checker](/tools), then read on for what the result does and does not prove. People now put the same question to AI assistants, so we link the primary sources behind every protocol and policy claim here.

Run these checks from your code

Get an API key at [/signup](/signup) and use 100 free checks a month. Credit packs and per-check prices are on [our pricing page](/email-validation-api-pricing).

[Get a free API key](/signup)

## Key facts

- [RFC 5321](https://www.rfc-editor.org/rfc/rfc5321), published October 2008, defines the RCPT TO command that probes rely on.

- Reply 252 means "Cannot VRFY user, but will accept message and attempt delivery" ([RFC 5321](https://www.rfc-editor.org/rfc/rfc5321)).

- A null MX ("MX 0 .") under [RFC 7505](https://www.rfc-editor.org/rfc/rfc7505.txt), from June 2015, means no mail.

- Gmail asks senders to keep spam rates [below 0.10% and never reach 0.30%](https://support.google.com/mail/answer/81126?hl=en).

- ContactLint gives 100 free checks a month, then [5,000 checks for $9](/email-validation-api-pricing).

## What verifying without sending is, and what it is not

Verifying without sending means you test an email address (the local-part@domain string) against public data, and sometimes against the receiving server, without delivering a message. It draws on the Domain Name System (DNS), where a domain publishes MX records that name its mail servers. It also draws on the Simple Mail Transfer Protocol (SMTP), the protocol servers use to hand mail to each other. People mix it up with four other things:

- Email validation (narrow sense): syntax, DNS and list checks only. This is what ContactLint does.

- Mailbox verification: an SMTP probe that asks a server about one recipient.

- Email authentication (SPF, DKIM, DMARC): this shows which domain sent a message. It tells you nothing about whether a recipient exists.

- A confirmation email: this counts as sending. It is also the only method that proves a human controls the inbox.

## Our data: what 24 ranking pages tell you, and leave out (checked November 1, 2026)

Method: on November 1, 2026 we ran three searches: "verify email address without sending email", "how to check if an email address is valid" and "check if email exists without sending". They returned 24 distinct article and tool pages. We skipped forums, video and social posts, plus 4 code repositories. This is a snapshot from that date. We opened 6 pages in full and judged the other 18 from their search snippets. If a snippet did not show something, we counted it as no, so features lower on those 18 pages may be undercounted. "Promotes its own tool" covers free and paid tools.

| Check | Pages (N of M) | 

| Explains asking the mail server about the mailbox (SMTP RCPT TO or similar) | 17 of 24 | 

| Warns that catch-all domains make results unknown | 6 of 24 | 

| Warns that probing risks greylisting, blocks or blacklists | 2 of 24 | 

| Gives a free manual method, such as an MX lookup | 16 of 24 | 

| Promotes its own verification tool | 18 of 24 | 

| Cites an RFC or other primary source | 1 of 24 | 

Most of what ranks for this question comes from vendors of SMTP verifiers. They explain the probe, but few mention its blind spots. Only 2 of the 24 pages warned that probing can get you greylisted, throttled or blocked, and only 6 said catch-all domains leave the answer unknown. Read "valid" on a free checker as "probably deliverable today," not as proof.

## What each method can prove

| Method | What it proves and what it cannot | 

| Syntax check | Proves the string has a usable address shape. Cannot catch gmial.com or a dead domain. See [email validation regex](/email-validation-regex). | 

| MX/A DNS lookup | Proves the domain publishes mail servers, or an A record to fall back on. A null MX means no mail. Says nothing about the mailbox. | 

| Disposable and role lists | Flags throwaway domains and shared inboxes like info@. Lists lag behind new disposable domains, and a role address can still be real. | 

| SMTP RCPT TO probe | A permanent 5xx rejection strongly suggests no mailbox. A 250 can mean accept-all, a deferred check, or a bounce that comes later. | 

| Catch-all detection | Probes a made-up address. If the server accepts it, the domain is catch-all and no mailbox-level answer is possible. See [catch-all email](/catch-all-email). | 

| Confirmation email | Proves a person controls the inbox and wants your mail. Requires sending, and only fits people who asked to hear from you. | 

## How to check an email address by hand

You need a terminal and the domain, which is everything after the @. Start with the MX lookup:

`# macOS or Linux
dig +short MX example.com

# Windows, macOS or Linux
nslookup -type=mx example.com

# No MX? Check the A record fallback
dig +short A example.com`
Here is how to read the output:

- One or more hosts with priorities (for example "10 mx1.example.com."): the domain accepts mail. You can look it up in a browser with our [MX record checker](/mx-record-checker).

- "0 .": a null MX. RFC 7505 defines it as the way a domain declares that it accepts no email at all. Treat the address as dead.

- No MX but an A record: under RFC 5321, senders may fall back to the A record. That is weak evidence. Plenty of web-only domains never read mail.

- NXDOMAIN or nothing at all: the domain does not exist, or its DNS is broken. Do not send.

An SMTP probe goes one step further. You connect to the MX host on port 25 and get partway through a delivery:

`EHLO yourhost.example
MAIL FROM:<you@yourdomain.example>
RCPT TO:<jane@example.com>
QUIT`
On Gmail and Microsoft domains, running this by hand tells you very little, for four reasons:

- Gmail requires sending domains or IPs to have valid forward and reverse DNS (PTR) records. If your laptop or VM has no matching PTR record, the session can fail before RCPT. That failure tells you about your IP, not the mailbox.

- If your network blocks outbound port 25, the connection times out and you learn nothing.

- RFC 5321 itself expects some servers to be unable to verify an address in real time, for example when they relay mail for another domain. A server can also accept at RCPT and still bounce the message later, so a 250 is not proof.

- Many probes from one IP look like address harvesting. They can draw temporary 4xx replies (greylisting) or blocks.

Use the probe to debug a server you run, not to vet a list.

## If an AI agent checks the address

People ask ChatGPT, Claude, Perplexity, Gemini and Google AI Overviews how to check whether an email exists. Each one answers from pages its systems can reach:

- ChatGPT: OpenAI lists OAI-SearchBot as the crawler that surfaces websites in ChatGPT search ([OpenAI docs](https://developers.openai.com/api/docs/bots)).

- Claude: Anthropic says Claude-SearchBot crawls the web to improve the quality and relevance of search results for users, and Claude-User may fetch pages when a user asks Claude a question ([Anthropic](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler)).

- Perplexity: PerplexityBot surfaces and links websites in Perplexity search results ([Perplexity docs](https://docs.perplexity.ai/docs/resources/perplexity-crawlers)).

- Gemini and AI Overviews: Google's Google-Extended token controls whether crawled content may be used to train Gemini models and for grounding. It does not affect Google Search inclusion or ranking ([Google](https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers)). The same page says Googlebot crawl preferences apply to Google Search and all its features, and AI Overviews appear inside Search.

If you publish guidance on this topic, do not block those search crawlers, and state your limits plainly so a quoted answer stays accurate. None of this guarantees a mention.

Agents that save contacts should call a tool, not guess. Our [hosted MCP server](/email-validation-mcp-server) exposes validate_email, validate_emails and validate_phone. The agent should report "domain accepts mail," never "mailbox verified." More on this in [email validation for AI agents](/email-validation-for-ai-agents).

## How to verify an email address without sending, step by step

### 1. Normalize and dedupe

Trim spaces, lowercase the domain, and remove duplicate rows before you check anything. Every duplicate you check costs time and credits.

Time: Seconds for one address. A few minutes in a spreadsheet for a list.

Done when: Each address appears once, with no stray whitespace.

### 2. Check syntax with a practical rule

Reject strings without exactly one @, with spaces, or with an empty local part or domain. Do not try to encode the full RFC grammar in a regex. Our [regex guide](/email-validation-regex) explains why.

Time: Instant in code.

Done when: Every remaining address has a plausible shape.

### 3. Look up MX, then A

Run the dig or nslookup commands above, or use an API that does the lookup over DNS-over-HTTPS. Drop null MX and nonexistent domains.

Time: Under a minute per domain by hand.

Done when: Each domain is marked "has MX," "A only," "null MX" or "does not exist."

### 4. Screen disposable, role and typo domains

Flag throwaway domains with a [disposable email checker](/disposable-email-checker). Decide what to do with info@ and admin@ using our [role-based detection guide](/role-based-email-detection). Catch gmial.com-style typos and offer the fix. Ready to automate steps 2 to 4? Create a key at [/signup](/signup) for 100 free checks a month, and see the packs on [our pricing page](/email-validation-api-pricing).

Time: One API call per address, or up to 50 addresses per batch request. At our published limit of 60 requests per minute per key, 4,000 single-address calls take about 67 minutes.

Done when: Every address carries disposable, role and typo flags you can act on.

### 5. Decide whether you need a mailbox-level guess

For signup forms and agents, steps 1 to 4 are usually enough. For an old list headed into a big campaign, a paid SMTP verifier adds a per-mailbox guess. Compare vendors in [ZeroBounce vs Kickbox vs NeverBounce](/zerobounce-vs-kickbox-vs-neverbounce).

Time: Depends on the vendor and the list size.

Done when: You know which addresses came back "unknown" or catch-all, and you have a rule for them.

### 6. Confirm with the person when it matters

For new signups, send a confirmation link. It is the only real proof. Our [signup validation guide](/validate-email-on-signup) shows where each check fits in the flow.

Time: One email, when the user signs up.

Done when: The person clicks the link.

### 7. Re-check before large sends

Addresses go stale. Re-run the DNS and list checks on old segments before a big send, and treat hard bounces as final. See [hard bounce vs soft bounce](/hard-bounce-vs-soft-bounce), and [clean a CSV list](/clean-email-list-csv) for a script.

Time: One batch job per send cycle.

Done when: The segment is re-checked and the bounced addresses are suppressed.

## Mistakes that cost the most

### Sending "test" emails to see what bounces (Gmail's 0.30% spam-rate ceiling)

Unrequested test messages draw spam reports. Google says to keep spam rates [below 0.10% and avoid ever reaching 0.30%](https://support.google.com/mail/answer/81126?hl=en), and it notes that improvements in spam rate can take time to show up in spam classification. Fix: run DNS and list checks first, and send confirmations only to people who asked.

### Checking the same address twice ($1.80 per 1,000 duplicates)

On the 5,000-check pack ($9), each check costs $0.0018, so 1,000 duplicate rows waste $1.80. On the 100,000 pack they waste $0.99. Fix: dedupe in step 1.

### Buying small packs for a big job ($81 extra on 100,000 checks)

Twenty 5,000-check packs cost $180. One 100,000 pack costs $99. Our credits do not expire, so buying ahead for work you know is coming costs nothing extra. Fix: size the pack to the real volume, using [the price list](/email-validation-api-pricing).

## DIY, free checkers, verifiers or an API: the realistic options

| Option | What you get, what it costs, the catch | 

| DIY by hand | dig, nslookup and a regex. Free. Slow, one domain at a time, no disposable list, and telnet probes are unreliable. | 

| Free web checkers | Paste an address, get a verdict. Free per address. Manual, with no audit trail, and catch-all answers stay unknown. | 

| Confirmation email | Proof that a person controls the inbox. Costs one send. It is sending, and it only fits people who opted in. | 

| Paid mailbox verifier | SMTP probing, catch-all flags, bulk uploads. Per-check prices are on each vendor's own pricing page, and the vendors are compared in [our comparison](/zerobounce-vs-kickbox-vs-neverbounce). Unknowns remain. | 

| ContactLint API or MCP | Syntax, MX/A, disposable, role, free provider, typo fix. 100 free a month, then 5,000 for $9. No SMTP, so it cannot prove a mailbox. | 

## How we compared the options

| Criterion (weight) | What it measures | 

| What it proves (35%) | How close the result gets to "a real person reads this inbox." | 

| Cost at list scale (25%) | Money and effort to check thousands of addresses. | 

| Automation and agent fit (20%) | Whether code or an AI agent can call it with no human in the loop. | 

| Risk to your sending (20%) | Chance of bounces, complaints or a blocked IP. Higher means safer. | 

Each option gets a 0 to 10 rating per criterion. The score is 0.35 × proves + 0.25 × cost + 0.20 × automation + 0.20 × risk. The ratings are our judgment, not measurements. Disclosure: ContactLint sells one of these options. We give 100 free checks a month, then sell credit packs from $9 for 5,000. We use no affiliate links. This guide quotes no outside vendor prices. Check each vendor's own pricing page.

Confirmation email: Best for signups you will email anyway. Score: 7.65/10, a judgment (proves 10, cost 7, automation 6, risk 6). Trade-off: it sends a message, so it cannot vet imported lists.

ContactLint API or MCP: Best for forms, CRM imports and agents that need fast pre-send checks. Score: 7.55/10, a judgment (proves 5, cost 8, automation 9, risk 10). Trade-off: no SMTP probing, so it cannot prove a mailbox exists.

Paid mailbox verifier: Best for old lists before a big campaign. Score: 7.45/10, a judgment (proves 8, cost 5, automation 8, risk 9). Trade-off: catch-all and deferred servers still return unknown.

Free web checkers: Best for one suspicious address. Score: 6.20/10, a judgment (proves 5, cost 9, automation 2, risk 9). Trade-off: manual and impossible to scale.

DIY by hand: Best for learning, or for debugging your own domain. Score: 5.50/10, a judgment (proves 4, cost 10, automation 2, risk 6). Trade-off: slow, and probes from your IP can get it blocked.

## Which option fits you

| If you are ... | Start with / watch out for | 

| A developer adding a signup form | Syntax, MX and typo checks on submit, then a confirmation link. Watch out: blocking role addresses can turn away real B2B buyers. | 

| A marketer with an old CRM export | Dedupe, DNS and list checks, then a mailbox verifier for what is left. Watch out: catch-all results are guesses. | 

| A founder building an AI agent | An MCP tool call before every contact write. Watch out: the agent must not claim a mailbox was verified. | 

| Checking one suspicious address | Our [free checker](/tools) plus a dig MX lookup. Watch out: skip the telnet probe. | 

| A sales team planning outreach | A paid verifier on top of DNS checks. Watch out: Gmail tracks spam rate and sending limits per domain and IP, so one bad campaign affects all your mail from that domain. | 

## Who this is not for

- People checking whether an email they received is a scam. These methods show whether a domain takes mail, not who sent you a message. A better route: find the company's contact details on its official site and use your mail provider's phishing report button.

- Anyone guessing addresses at a company. Probing guessed addresses is the harvesting pattern mail servers defend against. A better route: ask the person, or use opt-in forms.

- Teams that need guaranteed inbox placement. No pre-send check can promise it. Gmail also judges authentication and spam rate. A better route: confirmation emails plus Postmaster Tools monitoring.

## Frequently asked questions

### Is there a way to verify an email address without sending an email?

Partly. Syntax, MX and list checks show whether the address can receive mail at all, and an SMTP probe can suggest whether the mailbox exists. Only a confirmation email proves that a person reads it.

### Is there a way to validate an email address before sending?

Yes. Check it when the form is submitted: syntax, MX records, disposable and role flags, plus a typo suggestion. That catches typos, dead domains and throwaway addresses before they reach your database.

### How do I check if an email address is valid for free?

Run dig or nslookup for the domain's MX records, or paste the address into our [free checker](/tools). For code, a free API tier of 100 checks a month can cover a small signup form.

### Can I verify a Gmail address without sending?

You can confirm that gmail.com accepts mail, but that is always true. Gmail requires sending IPs to have valid forward and reverse DNS (PTR) records, so a manual probe from an IP without them may fail before you learn anything. In practice you need a confirmation email or a paid verifier.

### What is SMTP email verification, and is it accurate?

It connects to the domain's mail server, issues RCPT TO for the address, and disconnects before sending any data. A rejection is a useful signal. An acceptance can be a catch-all, a deferred check, or a 252, so accuracy depends on the server.

### Why do verification emails not send?

Common causes are a typo in the address, a dead domain or null MX, and spam filtering. Missing authentication is another: Gmail asks every sender to set up SPF or DKIM email authentication. Check the address first, then your sending setup.

### Can an AI assistant verify an email address for me?

Not on its own. An assistant can explain the methods, but it cannot see a mail server unless it calls a tool. Connect an agent to a validation tool over MCP and have it report exactly what the check proved.

### Does ContactLint check whether a mailbox exists?

No. We never open an SMTP connection, so we cannot confirm a mailbox or detect catch-all domains. We check syntax, MX and A records, disposable and role flags, free providers and typos.

## Sources

- [RFC 5321: Simple Mail Transfer Protocol (IETF, October 2008)](https://www.rfc-editor.org/rfc/rfc5321)

- [RFC 7505: A "Null MX" No Service Resource Record (IETF, June 2015)](https://www.rfc-editor.org/rfc/rfc7505.txt)

- [Google: Email sender guidelines](https://support.google.com/mail/answer/81126?hl=en)

- [OpenAI: crawlers and user agents](https://developers.openai.com/api/docs/bots)

- [Anthropic: Claude crawlers](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler)

- [Perplexity: crawlers](https://docs.perplexity.ai/docs/resources/perplexity-crawlers)

- [Google: common crawlers, including Google-Extended](https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers)

## Related guides

- [Catch-all email: what it means for verification](/catch-all-email)

- [Email validation regex: what works in 2026](/email-validation-regex)

- [Hard bounce vs soft bounce](/hard-bounce-vs-soft-bounce)

- [MX record checker](/mx-record-checker)

- [Email validation API pricing](/email-validation-api-pricing)

## What changed in this guide

- 2026-11: First published. Includes our review of 24 ranking pages (checked November 1, 2026; 6 opened in full, 18 judged from snippets), copy-paste DNS commands, and a section on AI assistants and MCP agents.

## Next step: check one address, then automate

Start with one address in our [free checker](/tools) so you can see what a DNS-level answer looks like. If the result fits your use case, move it into code. Get a key at [/signup](/signup), where you get 100 free checks every month with no card needed. When you need more, the credit packs and per-check math are on [our pricing page](/email-validation-api-pricing). Remember the scope: we check syntax, DNS and list flags, not mailboxes. For a per-mailbox guess on an old list, compare the verifiers in [our comparison](/zerobounce-vs-kickbox-vs-neverbounce). For proof that a real person reads the inbox, send a confirmation link.

[Get a free API key](/signup). 100 checks per month, no card required.

[Email this to yourself](mailto:?subject=How%20to%20Verify%20an%20Email%20Address%20Without%20Sending%20an%20Email%3A%20What%20Each%20Free%20Method%20Proves%20in%202026&body=https%3A%2F%2Fcontactlint.com%2Fverify-email-address-without-sending)
