Compared
SMTP verification vs. syntax validation
Syntax validation proves an address is well formed. SMTP verification proves a mail server will accept it. Only the second tells you mail will arrive.
| What you want to know | Syntax validation | SMTP verification |
|---|---|---|
| What is actually checked | The shape of the string against a grammar | Whether a mail server accepts the recipient |
| A typo that is still valid syntax | Passes — gmial.com is a legal domain name | Caught, as DNS_NXDOMAIN or LIKELY_DOMAIN_TYPO |
| A mailbox that never existed | Passes | Caught, as SMTP_MAILBOX_NOT_FOUND |
| A legal address the rule has not heard of | Often rejected — a real customer, turned away | Accepted; the server decides, not a pattern |
| What it costs | Nothing. No network call, instant | A DNS lookup and an SMTP conversation |
| When it cannot tell | It has no way to know it cannot tell | Returns unknown, and says which stage stopped |
Almost every signup form does some form of syntax validation, usually a regular expression, and it is worth keeping — it costs nothing and it catches the missing @. What it cannot do is the thing people expect of it. A well-formed address is a string that obeys a grammar. Whether a mailbox exists behind it is a different question, answered by a different system, and no amount of pattern matching gets at it.
The gap is widest exactly where it costs most. jhon@gmail.com is impeccably well formed. So is an address at a domain that was deleted last year, and so is an address whose mailbox was closed when its owner left the company. All three pass a regex and all three hard-bounce.
The reverse mistake is more expensive still. Hand-written email regexes routinely reject addresses that are perfectly legal — plus-addressing, new top-level domains, non-ASCII local parts — and a form that refuses a real customer's real address is a worse outcome than one that accepts a bad one, because nobody ever finds out.
These are not alternatives. Syntax validation belongs in the form, where it gives instant feedback with no network call; SMTP verification belongs behind it, where it can answer the question the regex was only ever standing in for.
Where this shows up in a result
Reason codes from the closed vocabulary in the API response. These are the exact strings an integration writes an if against.
INVALID_SYNTAX | Address is not well formed |
DNS_NXDOMAIN | Domain does not exist |
SMTP_MAILBOX_NOT_FOUND | Mailbox not found |
LIKELY_DOMAIN_TYPO | Domain looks like a typo |
Run one and see the difference.
The free checker returns the whole result — every stage, every reason code, nothing held back.