Поиск B2B-клиентов

Валидация email: как проверить B2B-адреса и разобрать результаты

Валидация email: как проверить один B2B-адрес или целую базу, понять статусы valid, invalid, unknown и catch-all и решить, что делать с каждым адресом.

Вы собрали контакты из нескольких источников. Часть адресов найдена недавно, часть лежит в базе месяцами. Перед работой со списком нужно отделить явные ошибки от адресов, которые стоит проверить дополнительно.

Валидация email помогает сделать это до отправки: сохраните исходную базу, проверьте адреса и запишите результат рядом с каждым контактом. Явно недействительные адреса исключите из активного списка, а unknown и catch-all не смешивайте с подтверждёнными. Статус valid тоже не гарантирует, что письмо попадёт во входящие или что адрес принадлежит нужному человеку.

Короткий порядок работы:

  1. Сохранить исходную таблицу и ID каждой строки.
  2. Исправить очевидные опечатки, не угадывая адрес за человека.
  3. Проверить адреса по одному или загрузить список в валидатор.
  4. Вернуть статусы к исходным контактам и сверить строки.
  5. Принять отдельное решение для valid, invalid, unknown и catch-all.
Ноутбук со списком контактов, конверт и карточки на столе
Работа с базой контактов

Содержание: Что проверяет валидатор · Как подготовить список · Как проверить адреса · Как разобрать статусы · Как вернуть результат в базу · Когда проверять повторно · Как выбрать сервис

Что проверяет валидатор

У проверки email несколько уровней. Сервис может посмотреть, правильно ли записан адрес, существует ли домен, есть ли у него почтовая инфраструктура и что отвечает почтовый сервер на попытку проверить конкретный ящик. Некоторые сервисы дополнительно отмечают временные, ролевые и catch-all адреса. Набор проверок зависит от инструмента. Например, Hunter описывает свои проверки отдельно для формата, домена, SMTP-сервера и accept-all.

Важно не делать из результата более сильный вывод, чем позволяет проверка. Правильное написание адреса не подтверждает существование ящика. Ответ почтового сервера не гарантирует доставку во входящие. Валидатор не знает, работает ли человек в компании сейчас и подходит ли ему ваше предложение.

Есть и техническая тонкость. Некоторые сервисы показывают отсутствие MX-записи как проблему домена. Но почтовый стандарт допускает доставку через адресную запись домена, если MX не задан. Поэтому отдельный признак MX not found стоит читать вместе с остальными результатами, а не превращать в универсальное правило «почта не работает». Это следует из RFC 5321.

Валидация отвечает на вопрос о технической пригодности адреса на момент проверки. Качество всей B2B-базы шире: там ещё нужно проверить компанию, роль контакта, источник и дубли. Этот процесс разобран отдельно в статье о B2B-базе клиентов.

Как подготовить список

Для одного адреса достаточно знать сам email и компанию, которой он предположительно принадлежит. Для базы нужна связанная таблица. Минимальные поля:

ПолеЗачем оно нужно
ID строкиВернуть результат к исходному контакту, даже если порядок строк изменится
Компания и доменПроверить, что адрес относится к нужной организации
Имя и роль контактаНе спутать технически рабочий ящик с нужным человеком
Исходный emailСохранить то, что было до исправлений
Источник и дата полученияПонять происхождение и возраст контакта
Новый статус и дата проверкиПринять решение и позже понять, когда его пересмотреть

Сначала сохраните неизменённую копию. Затем найдите пустые значения, одинаковые адреса и очевидные ошибки записи: пробелы по краям, два символа @, опечатку в известном домене. Если предполагаете исправление, сохраните исходное значение и проверьте новый адрес отдельно. Не превращайте догадку о формате корпоративной почты в «подтверждённый контакт».

Если в базе один email повторяется у нескольких строк, можно не платить за одинаковую проверку несколько раз. Но результат всё равно нужно вернуть ко всем связанным записям и разобраться, почему контакт продублирован. Для сверки используйте ID строки и исходный email. Перед сравнением можно убрать пробелы по краям адреса и привести к одному регистру доменную часть после @. Часть до @ автоматически не меняйте.

Результат этапа: у вас есть исходная база, отдельная рабочая копия и понятное число уникальных адресов для проверки.

Как проверить адреса

Если адресов немного, проверьте их по одному. Для каждого запишите в копии таблицы исходный email, ответ сервиса, причину и дату. Сверьте, что ни один адрес не остался без результата или отметки о причине пропуска.

Для списка используйте пакетную проверку. Например, Hunter описывает маршрут: открыть Bulk Email Verifier, загрузить CSV или вставить список, дождаться обработки и скачать результат. Скачайте результаты по всем статусам, включая unknown и catch-all. Отфильтрованная выгрузка или импорт в список лидов может скрыть часть адресов. Это пример доступного рабочего маршрута, а не утверждение, что Hunter лучше остальных. Перед загрузкой реальной базы проверьте, какие столбцы сервис сохранит в выгрузке. Если он принимает только адреса, соединять результат с исходной таблицей придётся отдельно.

Не удаляйте строки, по которым сервис не дал ответа. После пакетной проверки сверьте число отправленных адресов с числом результатов. Часть адресов может остаться без результата из-за лимита сервиса. После выгрузки отдельно отметьте адреса, которые сервис пропустил или которые не удалось сопоставить с исходной строкой. Не присваивайте им valid либо invalid; сохраните причину и следующий шаг.

Если контакты постоянно поступают из формы или CRM, проверку можно встроить через API. Для разовой таблицы API обычно не нужен: он добавляет настройку, хранение ключа и обработку ошибок. Сначала убедитесь, что ручной процесс и решения по статусам вообще понятны команде.

Как разобрать статусы

Названия и правила у сервисов отличаются. Смотрите не только общий статус, но и причину. Например, ZeroBounce отдельно возвращает статус и подстатус, а Hunter использует собственную классификацию.

РезультатЧто он позволяет сказатьЧто делать с записью
validАдрес прошёл проверки этого сервиса на момент запросаСохранить результат и дату. Отдельно проверить компанию, человека и допустимость контакта
invalidАдрес не прошёл проверку или сервер отказал в приёмеУбрать email из активного списка. Контакт и компанию не удалять автоматически
unknownСервис не смог установить результатОставить отдельный статус. Посмотреть причину и решить, есть ли смысл повторить проверку позже
catch-all или accept-allДомен может принимать письма на разные адреса без подтверждения конкретного ящикаНе считать ящик подтверждённым. Искать дополнительное подтверждение контакта
Ролевой адрес, например info@Ящик может обслуживать команду, а не нужного человекаОценить, подходит ли такой канал для задачи; не подменять им контакт ЛПР
Одноразовый адресАдрес может быть временнымНе считать его устойчивым рабочим контактом

Это редакционное правило принятия решений, а не обещание определённого процента доставок. Например, Hunter допускает осторожное использование accept-all, но одновременно пишет, что конкретный ящик при таком статусе подтвердить нельзя. Для B2B-базы разумнее хранить эту неопределённость явно, чем записывать её как valid. Hunter: значения статусов.

Unknown тоже не означает, что адрес ошибочен. Сервер мог временно не отвечать или блокировать внешнюю проверку. Если причина временная, вернитесь к строке позже. Если сервер последовательно блокирует проверку, повторение того же действия может не дать нового знания. Hunter разбирает причины неопределённого результата.

Два сервиса иногда дают разные ответы, потому что проверяют разные признаки и по-разному классифицируют неопределённость. Не выбирайте «удобный» результат автоматически. Сохраните оба, их даты и причины, затем решите, хватает ли данных для вашей задачи.

Как вернуть результат в базу

После скачивания файла не заменяйте исходную таблицу целиком. Соедините результаты с рабочей копией по ID строки. Если сервис не сохранил ID, используйте email и дополнительно проверьте дубли: один адрес может относиться к нескольким исходным строкам.

Добавьте как минимум четыре поля: статус, причина, сервис, дата проверки. Отдельное поле решение команды позволит не путать ответ инструмента с вашим действием. Например, сервис вернул catch-all, а команда записала «нужно подтвердить адрес другим источником».

Проверьте итог:

  1. Сколько адресов отправлено и сколько результатов получено.
  2. Какие строки пропущены или остались без ответа.
  3. Не изменились ли компания и контакт у нескольких проверенных строк.
  4. Не попал ли unknown в группу valid из-за фильтра или формулы.
  5. Есть ли причина исключения, если адрес убран из активной работы.

Для проверки соответствия возьмите несколько строк из разных групп результатов, а не только первые строки файла. Если обнаружилась ошибка соединения, вернитесь к исходной копии и повторите импорт.

Учебный пример: строка A получила valid, поэтому осталось проверить связь адреса с нужным человеком. Строка B получила catch-all и требует другого подтверждения. Строка C получила unknown, причину которого нужно выяснить до следующего решения. Это вымышленные записи, а не результаты проверки реальной базы.

Когда проверять повторно

Адрес стоит перепроверить, если запись долго лежала без использования, человек сменил компанию, адрес был исправлен вручную или письмо вернулось с ошибкой. Универсального срока годности проверки нет: результат фиксирует состояние на конкретную дату, а почтовый ящик и политика сервера могут измениться.

Если письмо вернулось, сначала прочитайте сообщение о недоставке. Ошибка может означать несуществующий адрес, временную проблему сервера, переполненный ящик или отказ по политике принимающей стороны. Google перечисляет разные причины возврата, а Microsoft различает временные и постоянные ошибки.

Не пытайтесь исправить каждую недоставку повторной валидацией. Если проблема в настройках отправителя, репутации или содержании письма, адрес может быть рабочим. Техническую подготовку канала и обработку ответов я разбираю в статье об email-аутриче.

Отдельно от технической проверки решается вопрос, можно ли вообще писать человеку. Наличие адреса в открытом источнике и статус valid сами по себе такого разрешения не дают. Правила зависят от страны и типа адресата. Например, британский регулятор ICO различает корпоративных и индивидуальных подписчиков и отдельно рассматривает обработку персональных данных B2B-контактов.

Как выбрать сервис

Для небольшой B2B-базы сначала проверьте, насколько понятен результат по каждому адресу и можно ли выгрузить его вместе с причиной. Обещанный процент точности сам по себе не поможет разобрать спорные строки. Проверьте:

  • различает ли сервис invalid, unknown и catch-all;
  • показывает ли причину или подстатус;
  • можно ли выгрузить все результаты, включая неопределённые;
  • сохраняются ли ваши исходные столбцы;
  • что происходит со строками сверх лимита;
  • сколько стоят именно обработанные адреса;
  • как долго сервис хранит загруженный файл и как его удалить;
  • нужен ли вам API или достаточно разовой загрузки.

Политика хранения не одинакова у разных продуктов. Например, Hunter публикует сроки хранения пакетных результатов. Перед загрузкой своей базы проверьте актуальные условия выбранного сервиса и разрешён ли такой способ обработки контактных данных в вашей задаче.

Не нужно искать инструмент, который обещает «точно узнать, существует ли любой ящик». Catch-all, блокировка проверок и временные ошибки делают такой ответ невозможным для части адресов. Хороший рабочий результат выглядит скромнее: вы убрали явные ошибки, сохранили неопределённость отдельным статусом и можете объяснить решение по каждой строке.

Вывод

Валидация email полезна тогда, когда после неё база становится понятнее. Для каждого адреса сохранены исходное значение, дата проверки, результат и принятое решение. Invalid исключён из активного списка, unknown и catch-all не названы подтверждёнными, а valid не превращён в гарантию доставки или разрешение на рассылку.

Использованные источники