Сравнение
SMTP-проверка против проверки синтаксиса
Проверка синтаксиса доказывает, что адрес корректно записан. SMTP-проверка доказывает, что почтовый сервер его примет. О том, что письмо дойдёт, говорит только вторая.
| Что вы хотите узнать | Проверка синтаксиса | SMTP-проверка |
|---|---|---|
| Что проверяется на самом деле | Форма строки по грамматике | Примет ли почтовый сервер получателя |
| Опечатка с корректным синтаксисом | Проходит — gmial.com легальное имя домена | Поймана: DNS_NXDOMAIN или LIKELY_DOMAIN_TYPO |
| Ящик, которого никогда не было | Проходит | Пойман: SMTP_MAILBOX_NOT_FOUND |
| Легальный адрес, незнакомый правилу | Часто отвергнут — настоящая клиентка не прошла | Принят; решает сервер, а не шаблон |
| Во что обходится | Ни во что. Без сетевого вызова, мгновенно | DNS-запрос и SMTP-разговор |
| Когда решить нельзя | Она не может знать, что не может решить | Возвращает «неизвестно» и называет этап |
Почти каждая форма регистрации проверяет синтаксис, обычно регулярным выражением, и это стоит оставить: обходится бесплатно и ловит пропущенную @. Чего она не умеет — так это того, чего от неё обычно ждут. Корректно записанный адрес — это строка, подчиняющаяся грамматике. Существует ли за ней ящик — другой вопрос, на который отвечает другая система, и никакое сопоставление с шаблоном до него не добирается.
Разрыв шире всего ровно там, где он дороже всего. jhon@gmail.com записан безупречно. Как и адрес на домене, удалённом в прошлом году, и адрес, ящик которого закрыли, когда его владелица ушла из компании. Все три проходят регулярное выражение, и все три дают жёсткий возврат.
Обратная ошибка обходится ещё дороже. Самописные выражения для email регулярно отвергают совершенно легальные адреса — плюс-адресацию, новые домены верхнего уровня, локальные части вне ASCII, — а форма, отвергающая настоящий адрес настоящей клиентки, хуже той, что приняла плохой: об этом никто никогда не узнает.
Это не альтернативы. Проверке синтаксиса место в форме, где она даёт мгновенный отклик без сетевого вызова; SMTP-проверке — за ней, где она может ответить на вопрос, который регулярное выражение всегда лишь подменяло.
Где это видно в результате
Коды причин из закрытого словаря ответа API. Это ровно те строки, против которых интеграция пишет if.
INVALID_SYNTAX | Адрес составлен неверно |
DNS_NXDOMAIN | Домена не существует |
SMTP_MAILBOX_NOT_FOUND | Ящик не найден |
LIKELY_DOMAIN_TYPO | Домен похож на опечатку |
Проверьте и увидите разницу.
Бесплатная проверка возвращает результат целиком: каждый этап, каждый код причины, без умолчаний.