Email Verification
Does this email address actually work? Verification goes beyond format checking to confirm a mailbox can receive mail. Here's how it works, what it can and can't tell you, and when you need it.
Verification vs. Validation
People use these terms interchangeably, but they check different things. Both matter — and NovaCheck does both in a single API call.
Email Validation
Checks whether an address looks right — syntactically correct, domain exists, MX records present. Fast, deterministic, and reliable.
- ✓ Format check (RFC 5322)
- ✓ Domain DNS lookup
- ✓ MX record existence
- ✓ Disposable domain detection
- ✓ Typo suggestion
- — Does not confirm the mailbox exists
Email Verification
Goes further — probes the mail server to check if the specific mailbox exists. Adds SMTP-level confidence on top of validation signals.
- ✓ Everything validation does
- ✓ SMTP recipient check
- ✓ Catch-all domain detection
- ✓ Role account detection (info@, sales@)
- ✓ Confidence score per address
- ⚠ Best-effort — some servers reject probes
How Email Verification Works
Syntax Check
The address is parsed against RFC 5322 rules. Missing @ symbols, invalid characters, empty local parts, and malformed domains are rejected immediately. No network calls yet — this is fast and deterministic.
DNS & MX Resolution
The domain is resolved via DNS. MX records tell us which mail servers accept mail for this domain. If there are no MX records (and no fallback A record), the address cannot receive mail — marked undeliverable.
SMTP Probe
When requested and real MX records are available, an SMTP connection is established to the mail server and a RCPT TO command is issued for the address. If the recipient is accepted, NovaCheck probes a random address at the same domain to check for catch-all behavior. Catch-all domains are flagged separately rather than marked simply "valid."
Signal Aggregation
All signals are combined into a single result with a reason code (deliverable, undeliverable, risky, unknown) and a numeric score (0–100). Catch-all domains, disposable providers, and role accounts are each flagged so you can apply your own rules.
What Verification Can't Tell You
No email verification service is 100% accurate. Here's what honest verification looks like:
Catch-all domains
Some mail servers accept mail to any address at the domain (e.g., many corporate Exchange setups). NovaCheck only tests for this when SMTP probing is enabled, real MX records exist, and the requested recipient is accepted first. If a random address at the same domain is also accepted, the domain is flagged as catch-all so you can handle it in your own logic.
Greylisting & rate limiting
Some servers temporarily reject unknown senders on first contact (greylisting) or rate-limit SMTP probes. This can produce "unknown" results rather than a definitive answer. It's better to return "unknown" than to guess.
Mailboxes that accept and bounce
Some providers accept mail during SMTP and later bounce it. No external probe can detect this — it's an internal mail routing decision. Verification reduces bounces significantly, but can't eliminate them entirely.
When to Verify (and When Validation Is Enough)
Verify when stakes are high
- • Account signup — prevent throwaway accounts and typos that lock users out
- • Payment confirmation — a wrong email means lost receipts and chargeback risk
- • Fraud detection — disposable and catch-all domains are a strong fraud signal
- • Newsletter onboarding — protect your sender reputation from day one
Validation may be enough when
- • Contact forms — catch obvious typos, but a 50ms DNS check is usually sufficient
- • Internal tools — you control the data source and can tolerate some bounces
- • Low-volume lists — if you're sending 50 emails, an occasional bounce isn't worth the extra latency
NovaCheck runs both checks in one call. Use the smtp parameter to control whether SMTP probing runs.
Verify an Email in One Call
curl -X POST "https://api.novacheck.io/v1/email" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer nc_liv...EY" \
-d '{"emails": ["[email protected]"], "smtp": true}'{
"results": [{
"email": "[email protected]",
"valid": true,
"reason": "deliverable",
"sub_reason": null,
"syntax_valid": true,
"score": 95
}],
"summary": {
"total": 1, "deliverable": 1,
"undeliverable": 0, "risky": 0, "unknown": 0
}
}Set "smtp": true to enable SMTP verification. Omit it for DNS-only validation (faster, but less certain). Full API reference →
Start verifying emails today
500 free validations per month. SMTP verification included on all plans.