Как написать валидный емайл

Что такое валидный и невалидный email

Содержание

  • 1 Валидная почта
    • 1.1 Регистрация
  • 2 Невалидная почта
  • 3 Проверка e-mail
  • 4 Заключение
  • 5 Видео по теме

Как это не странно на первый взгляд, но оказывается e-mail адрес в сети имеет определенную репутацию. Проверкой репутации электронных адресов занимаются специальные приложения и сервисы, которы называются валидаторами. В основном на репутацию адреса влияет периодичность проверки его валидности и реакция на отправленные послания (прочтение сообщений). Если реакция на послание есть, адрес считается валидным и может использоваться для переписки, регистрации на иных ресурсах и других действий с ним. В сегодняшней статье раскроем тему, что такое валидация e-mail. Рассмотрим валидную и невалидную почту, определим разницу между ними, опишем сферы использования, а также расскажем про сервисы проверки электронных адресов.

Валидация адреса

Валидная почта

В данном разделе расскажем про валидный e-mail и попытаемся понять, что это такое и как оно влияет на электронные почтовые адреса. Само слово «валидный» имеет английские корни. Переводится на русский язык слово «valid», как «действующий» или «действительный». Если сказать простым языком, то валидный адрес — это действующий адрес электронной почты. Значит его можно использовать для отправки, получения писем, регистрации на различных ресурсах и иных действий с e-mail адресом.

Довольно часто при регистрации на различных сервисах, можно встретить такое информационное сообщение системы — «Укажите валидный адрес электронной почты». В этом уведомлении нет ничего странного, ведь система просто запрашивает действующий адрес электронной почты, на который можно отправлять сообщения, а пользователь сможет их получать и читать.

E-mail адрес

Валидный адрес — это действующий (подлинный) email, созданный без синтаксических ошибок. Чтобы электронный адрес стал валидным, он должен пройти так называемую процедуру проверки адреса (verify e-mail). При этом подобный почтовый ящик обязательно должен использоваться владельцем для получения и отправки писем. Основные требования к валидности адреса следующие:

  1. Адрес всегда состоит из двух частей, разделенных знаком «@». Левой частью является имя ящика, а правая часть указывает на доменный адрес почтового сервера.
  2. Отсутствие синтаксических ошибок в правой или левой частях e-mail адреса.
  3. Отсутствие дубликатов у адреса. Также указанный адрес сам не должен был дубликатом какого-то e-mail адреса. Такие адреса можно встретить в базе Яндекс. Например, dom@yandex.ru и dom@1yandex.ru. Оба мейла назначаются одному пользователю автоматически при регистрации.Структура e-mail адреса
  4. Ящик не должен указывать на отдел определенной компании. При этом он валиден для сообщений узкой сферы и не валиден для широких сфер. Например, финансовый отдел получает финансовые отчеты на валидный адрес, но робот социальных сетей считает эту почту невалидной, так как на них нет никакой реакции.
  5. Электронная почта с постоянной реакцией. Пользователь принимает, читает и отвечает на сообщения. При этом степень валидности этого ящика зависит от папки, в которую поступают сообщения. Если письма попадают в папку «Спам», то валидность ящика для отправителя этих писем понижается, т.к. нет никакой реакции на послания и уведомления об их прочтении не поступают.

Теперь мы разобрались, что такое валидность электронного почтового ящика. Далее рассмотрим, кому же требуются подобные адреса. В основном их запрашивают:

  1. Почтовые роботы социальных сетей. Тут все очень просто. Достаточно пройти проверку электронной почты, а в настройках запретить получения сообщений от системы. Адрес при этом все равно останется валидным.
  2. Интернет-магазины. Здесь большой упор делается на попадание в клиентскую базу. Часто после регистрации приходит масса писем с рекламой, призывами купить по акции. Отключение уведомлений не дает никакого результата.
  3. Новостные сервисы. Схожая реакция на добавление в базу данных.
  4. Компании. Зависит от направления деятельности, но может случиться кража или передача данных.

Validated

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

Регистрация

Зарегистрировать валидный адрес, значит обеспечить себя правильным и актуальным почтовым ящиком, который будут принимать сторонние сервисы для регистрации. Получить такую почту можно на широко известных почтовых сервисах: Яндекс Почта, Майл.ру, Gmail. При регистрации стоит правильно отнестись к требованиям сервиса по назначению имени будущей электронной почты. Следует придумать имя полностью из латинских букв, которое можно дополнить цифрами и символами. При использовании адреса на сторонних сервисах, необходимо прописывать его без ошибок. Последнее правило относится как к правой, так и к левой части адреса.

Популярные почтовые сервисы

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

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

Невалидная почта

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

Отправка почтовых сообщений

Невалидный адрес имеет следующие признаки:

  1. В адресе имеется синтаксическая ошибка в правой или левой частях. Например, dёm@maii.ru. В левой части указан неверный символ (кириллица), а в правой части имеется ошибка в написании имени домена.
  2. Электронный ящик удален или заблокирован.
  3. E-mail адрес не посещается. Некоторые почтовые сервисы блокируют аккаунты пользователей, если они не посещают их 20-30 дней. За счет таких действий можно сделать действующий адрес невалидным.
  4. Сообщениям отправителя присвоен статус «Спам».
  5. Адрес является спам-ловушкой и зарегистрирован на сервисе выявления спама.
  6. В адресе имеется ошибка маршрутизации по MX.
  7. Мейл является временным и зарегистрирован на соответствующем сервисе. Так называемая временная или 10 минутная почта.
  8. Адрес, сервер или страна отправителя заблокированы почтовым сервисом.

Spam

Невалидные адреса существенная проблема как для их владельца, так и для сервисов отправителей сообщений. Для владельца проблема состоит в следующем:

  1. Невозможность зарегистрировать новый аккаунт на стороннем ресурсе. Подтвердить владение указанным почтовым адресом не получится.
  2. Запрет на получение важных рассылок и новостей с сайтов.
  3. Нельзя получать письма от своих контактов.

Больше всего от наличия невалидных ящиков страдают сервисы рассылки, рекламные и торговые компании:

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

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

Проверка e-mail

Чтобы не тратить деньги на рассылку по невалидным почтовым ящикам, отправитель проверяет свою базу при помощи различных валидаторов. Это могут быть как специальные сервисы, так и разработанные для этих целей приложения. Валидатор способен проверить одиночный e-mail адрес или целую базу почтовых адресов на актуальность (валидность). Ниже приведен список популярных онлайн-сервисов для проверки валидности e-mail адресов.

Популярные сервисы

Проверка затрагивает следующие области адреса:

  1. Проверка на наличие синтаксических ошибок.
  2. Контроль назначения e-mail адреса. Делается проверка, является ли ящик пользовательским или корпоративным.
  3. По серверу и домену на наличие ошибки записей по МХ.
  4. Скорость реакции по уведомлению о доставке. Если данного уведомления нет, почта считается заблокированной, неактивной или письмо перенаправляется в папку «Спам».

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

  1. Открываем браузер и набираем адрес данного валидатора. Можно также воспользоваться приведенной выше ссылкой.
  2. После этого кликаем по строчке «Валидатор Email» вверху экрана или внизу под шапкой.Валидатор email
  3. Вводим адрес электронной почты, потом нажимаем кнопку «Проверить».
  4. Потом проходим проверку капчей и ожидаем результаты проверки.Пройдите проверку
  5. Финальный шаг — получаем готовый отчет с результатами проверки.Результаты

Результаты проверки адреса trast1986@mail.ru следующие:

  1. Отсутствуют синтаксические ошибки.
  2. Нет ошибок по МХ.
  3. Подтверждается доставка сообщения.
  4. Данный адрес не является временным.
  5. Почта зарегистрирована на бесплатном тарифе, а значит не является корпоративной.

Это означает, что данный адрес является валидным, посещается пользователем, пригоден для регистрации на сторонних сервисах и отправки сообщений. Результат проверки доступен по ссылке, которую можно скопировать и передать заказчику для повторного тестирования.

Данный онлайн-валидатор позволяет проверять только одиночные адреса. Дополнительно есть возможность сделать тест на спам, проверить сервер e-mail адреса перед отправкой сообщения.

Пользователи часто сталкиваются с проблемой, когда подписка на рассылку или простая регистрация по e-mail приводят к получению массы ненужных сообщений. Письма приходят на электронную почту, а отписка от них не предотвращает получение большого числа таких писем. Это означает, что ваш почтовый ящик попал в базу валидных адресов и используется в качестве источника трафика. Однако, если отписка не помогает, адрес можно сделать невалидным для отправителя. Просто создайте правило для такого контакта, чтобы все сообщения от него попадали в спам. При последующей проверке валидатором всей базы, ваш email попадет в список недействительных и может быть удален из рассылки. В этих базах почтовые ящики без реакции долго не держатся. Через короткое время они удаляются из-за ненадобности.

Заключение

Сегодня мы узнали, что такое валидные и невалидные электронные адреса. Простому пользователю достаточно создать почтовый ящик на проверенном почтовом сервисе и периодически проверять полученные сообщения. Такой аккаунт будет считаться активным и валидным. Во всех остальных аспектах тема валидного и особенного невалидного адреса больше затрагивает специалистов по e-mail маркетингу, которые пользуются базами для массовой рассылки сообщений.

Видео по теме

Валидный email — это реально действующий электронный адрес.

Почему отправителю рассылок важно, чтобы email был валидным?

Какие адреса считаются валидными и невалидными

Слово «валидный» образовано от английского valid — действительный, годный, обоснованный.

Невалидные адреса — это:

  1. Неверно написанные емейлы. Ошибки могут быть как в первой части email — до @, так и во второй, доменной:валидный email должен быть без ошибок в написании
    Ошибка в адресе при регистрации
  2. Дубликаты адресов — сервис по валидации также признает их невалидными.
  3. Спам-ловушки — специальные адреса, которые выявляют отправителей-спамеров.
  4. Корпоративные адреса отдела или службы в компании, например, info@company.com или hr@company.com.
  5. Временные адреса, которые пользователи заводят для анонимных переписок, регистрации на сомнительных сервисах или форумах. Такие адреса создаются на специальных сервисах, не требуют регистрации и через короткое время удаляются:временный адрес, который будет удален
    Временный адрес, который негативно повлияет на репутацию отправителя, если попадёт в базу
  6. Адреса с неверной MX-записью в домене при регистрации почтового сервера.
  7. Неактивные долгое время емейлы.

Читайте также

Спам-ловушки: как не попасть в капкан

Зачем нужна проверка валидности email

Невалидные адреса в базе рассылки способствуют тому, что письма рассылки попадают в спам и/или возвращаются. Чем больше таких писем, тем больше страдает репутация компании как отправителя.

Жёсткие возвраты (hard bounce) могут привести к блокировке отправителя в сервисе-рассыльщике. Они случаются по одной из следующих причин:

  • такого адреса не существует;
  • нет домена, на котором создан адрес;
  • сервер пользователя заблокировал доставку рассылки;
  • пользователь лично отправил рассылки в спам.

Мягкие возвраты (soft bounce) происходят из-за временных технических проблем, например, слишком большого текста письма или переполненной почты получателя. На платформах рассылок есть лимиты на soft bounce, после превышения которых отказ переходит в категорию жёсткого и ведёт к блокировке.

Чтобы такого не происходило, стоит регулярно проверять адреса базы на валидность.

В результате получаем:

  • актуальные email-адреса с низким риском попадания в спам;
  • более высокий доменный рейтинг из-за увеличения доверия к домену;
  • повышенную доставляемость писем.

Валидацию адресов проводят на этапе сбора и повторяют проверку минимум раз в полгода. Если база растёт, логично увеличить и частоту проверок.

Кому нужна проверка email-адресов на валидность

Особенно озаботиться проверкой базы стоит тем компаниям, которые:

  • используют подписку ​​single opt-in (без дополнительного подтверждения);
  • получают адреса клиентов из анкет, заполненных офлайн, — есть вероятность опечатки или неверной интерпретации написанного;
  • отправляют рассылки по старым базам;
  • часто получают жалобы на спам.

Как проверить валидность почты

Проверить email на валидность можно с помощью специальных сервисов — валидаторов или верификаторов.

Что именно проверяют валидаторы?

Синтаксис адреса

В этой итерации проверяется формат написания и выявляются адреса с ошибками, корпоративные емейлы, дубликаты.

Домен и сервер

Проверяется наличие и корректность MX-записи в базе доменных имён. Эта запись вносится при регистрации сервера, чтобы почтовый агент мог пересылать письма на нужный сервер.

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

Активность почтового ящика

Сервис-верификатор проверит, пользуется ли владелец адреса почтовым ящиком в данное время.

Сервисы для валидации email

Проверить email на валидность можно в онлайн-сервисах и программах, которые можно установить на компьютер.

валидный email проверяется через сервис

Один из сервисов выявил невалидный адрес и указал его параметры

Онлайн-проверка валидности email

Сравним онлайн-сервисы, которые проверяют валидность адресов. Все они выполняют основные функции верификации: проверяют адреса на синтаксис, проверяют домены, находят одноразовые или неактивные емейлы. Различаются отдельными возможностями и тарифами.

Сервис Что умеет Бесплатно Платно
BriteVerify Интегрируется через API По запросу техподдержки 0,01$ за один адрес
Bouncer Профессиональная техподдержка, гибкие тарифы 100 проверок От 20 до 500$ в месяц, индивидуальный тариф с персональным менеджером
BulkEmailVerifier Работает быстро и одновременно с несколькими списками в форматах CSV или TXT, отчёты в CSV От 25$ за 3 тысячи адресов
DataValidation Сервис для профессионалов с развёрнутым API и автоматическим мониторингом списков 500 проверок Тариф зависит от количества контактов: от 0,007$, если нужно проверить до 10 тысяч адресов, до индивидуальных тарифов
Email Checker Проверяет онлайн по API, может корректировать адреса, удаляя недопустимые символы 14$ за тысячу адресов
Email List Verify Дополнительно проводит необнаруживаемые проверки 100 проверок От 0,0003$ за адрес или от 139$ в месяц при величине списка в 5 тысяч адресов
EmailMarker Работает с форматами: CSV, TXT, XLS, XLSX. Круглосуточная техподдержка 150 проверок От 21$ в месяц
ePochta Verifier Online Быстрая проверка, неограниченное количество баз 100 проверок От 0,00005$ за 1 адрес
Kickbox API для верификации в реальном времени, 100 проверок От 0,008$ за 1 адрес
MailboxValidator Делит все контакты на три группы: валидные, условно-валидные и невалидные 100 проверок в течение 30 дней 149,95$ за 50 тысяч проверок
MailGet List Cleaning Проверяет списки в девять этапов, определяет hard bounce От 159$ за 50 тысяч проверок
Mailfloss Интегрируется с MailChimp и другими сервисами, проверяет базу ежедневно 7 дней От 17$ в месяц
Mailvalidator Экспресс-проверка, интеграция через API, техподдержка в телеграме Экспресс-проверка без выгрузки отчётов 5 списков адресов в течение месяца Экспресс-проверка — ​​0,25₽ за адрес для списка до 10 тысяч контактов, полная проверка — плюс 0,18₽
MillionVerifier Один из самых дешёвых валидаторов с техподдержкой во всех версиях 10 адресов, плюс 200 адресов, если подтвердить номер телефона От 50$ за 50 тысяч адресов
NeverBounce Проверяет в реальном времени, автоматически чистит базу Тысяча проверок От 0,008$ за адрес при проверке до 10 тысяч адресов
Pabbly Email Verification Находит адреса по ключевым словам, использует медленную отправку для более точных результатов От 5$ за тысячу адресов
QuickEmailVerification Поддерживает форматы: CSV, TXT, XLS, XLSX, ODS. Даёт возможность без регистрации попробовать некоторые функции бесплатно 100 проверок ежедневно От 0,008$ за адрес при проверке базы от 500 до 3500 адресов
SendPulse Verifier Предлагает сразу несколько вариантов проверки, предоставляет подробный отчёт. Один адрес в день или 100 адресов в месяц От 0,28₽ за адрес
Snov.io Может идентифицировать платные и бесплатные домены, есть расширение для Chrome 100 проверок От 39$ в месяц
TrueMail Ориентирован на профессионалов, синхронизируется с CRM Тысяча проверок От 7$ за тысячу проверок
Xverify Использует технологию защиты от мошенничества, может проверять номера телефонов 100 проверок От 0,01$ за адрес для базы в 5 тысяч контактов
ZeroBounce Находит и добавляет в отчёт данные о пользователях, удаляет адреса с hard и soft bounce 100 проверок От 0,008$ за адрес для базы от 2 до 5 тысяч контактов

SaaS-решения для проверки email

При необходимости можно установить программу для проверки email на компьютер. Сравним популярные SaaS-программы.

Программа Что умеет Сколько стоит лицензия
ePochta Verifier Загружает списки и выгружает отчёты в удобном для пользователя формате, анализирует работу домена 2 400₽
High Speed Verifier Проверяет до нескольких тысяч адресов в секунду 1 500₽ в год, есть бесплатная версия с ограниченными возможностями
MailList Validator Проверяет до нескольких сотен адресов в секунду, импортирует адреса из любых источников, ищет адреса по гибким критериям Бесплатно

Как избежать попадания в базу невалидных адресов

Для поддержания чистоты базы следуйте простым правилам:

  1. Собирайте базу самостоятельно.
  2. Используйте double opt-in подписку, всегда предоставляйте возможность отписки.
  3. Регулярно проверяйте базу, пропускайте через валидатор, чистите от невалидных адресов.

Читайте также

Главное, что нужно сделать, чтобы не попасть в спам: DKIM, SPF, DMARC

Подытожим

Репутация отправителя рассылок напрямую зависит от валидности его подписной базы. Чтобы реже попадать в спам и избежать блокировки за невалидные адреса в базе, регулярно проверяйте списки рассылок с помощью специальных онлайн-сервисов или специальных программ.

Время на прочтение
5 мин

Количество просмотров 119K

От переводчика: прочитав статью, начал было отвечать в комментариях, но решил, что текст, на которую я собирался ссылаться, достоин отдельной публикации. Встречайте!

Если вы знаете, как валидировать email-адрес, поднимите руку. Те из вас, кто поднял руку — опустите её немедленно, пока вас кто-нибудь не увидел: это достаточно глупо — сидеть в одиночестве за клавиатурой с поднятой рукой; я говорил в переносном смысле.

До вчерашнего дня я бы тоже поднял руку (в переносном смысле). Мне нужно было проверить валидность email-адреса на сервере. Я это уже делал несколько сот тысяч раз (не шучу — я считал) при помощи классного регулярного выражения из моей личной библиотеки.

В этот раз меня почему-то потянуло ещё раз осмыслить мои предположения. Я никогда не читал (и даже не пролистывал) RFC по email-адресам. Я попросту основывал мою реализацию на основе того, что я подразумевал под корректным email-адресом. Ну, вы в курсе, что обычно говорят о том, кто подразумевает. [прим. перев. Автор имеет в виду игру слов: «when you assume, you make an ass out of you and me» — «когда вы (что-то) подразумеваете, вы делаете /./удака из себя и из меня»]

И обнаружил кое-что занимательное: почти все регулярные выражения, представлены в интернете как «проверяющие корректность email-адреса», излишне строги.

Оказывается, что локальная часть email-адреса — то, что перед знаком «@» — допускает гораздо более широкое разнообразие символов, чем вы думаете. Согласно разделу 2.3.10 RFC 2821, который определяет SMTP, часть перед знаком «@» называется локальной частью (часть после знака — это домен получателя) и предназначена для интерпретации исключительно сервером получателя.

Следовательно — и благодаря длинной череде проблем, вызванных промежуточными хостами, пытавшимися оптимизировать передачу путём изменения их [адресов — перев.], локальная часть ДОЛЖНА быть интерпретирована (и ей должен быть назначен семантический смысл) исключительно сервером, указанным в доменной части адреса.

Раздел 3.4.1 RFC 2822 описывает дополнительные детали спецификации email-адреса (выделено мной — авт.).

Адресная спецификация представляет собой определённый идентификатор в сети Internet, содержащий локально интерпретируемую строку, за которой следует знак «эт» («@», ASCII-код 64), за которым, в свою очередь, следует домен сети Internet. Локально интерпретируемая строка представляет собой либо обрамлённую кавычками строку, либо точечный атом.

Точечный атом — это набор атомов, разделённых точками. В свою очередь, атом определён в разделе 3.2.4 как набор алфавитно-цифровых символов и может включать в себя любые из нижеследующих символов (знаете, те самые, которыми обычно заменяют мат)…

! $ & * - = ^ ` | ~ # % ' + / ? _ { }

Более того, вполне допустимо (хотя не рекомендуется и редко где применяется) иметь закавыченные локальные части, в которых допустимы почти любые символы. Закавычивание может производится либо при помощи символа обратной черты, либо путём обрамления локальной части двойными кавычками.

RFC 3696, Application Techniques for Checking and Transformation of Names, был написан автором протокола SMTP (RFC 2821) как человекочитаемое руководство по эксплуатации SMTP. В третьем разделе он приводит примеры корректных email-адресов.

Это таки корректные email-адреса!

  • "Abc@def"@example.com
  • "Fred Bloggs"@example.com
  • "Joe\Blow"@example.com
  • "Abc@def"@example.com
  • customer/department=shipping@example.com
  • $A12345@example.com
  • !def!xyz%abc@example.com
  • _somename@example.com

(Аплодисменты автору RFC за использование моей любимой версии Васи Пупкина — Joe Blow.)

Ну-ка, прогоните их через ваш любимый валидатор. Ну как, много прошло?

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

^(?!.)("([^"r\]|\["r\])*"|([-a-z0-9!#$%&'*+/=?^_`{|}~] |(?@[a-z0-9][w.-]*[a-z0-9].[a-z][a-z.]*[a-z]$

Учтите, что это выражение подразумевает, что чувствительность к регистру выключена (RegexOptions.IgnoreCase в .NET). Согласен, весьма уродливое выражение.

Я написал юнит-тест, чтобы продемонстрировать все случаи, которые оно покрывает. Каждая строка содержит email-адрес и флаг — является он корректным или нет.

[RowTest]
[Row(@"NotAnEmail", false)]
[Row(@"@NotAnEmail", false)]
[Row(@"""test\blah""@example.com", true)]
[Row(@"""testblah""@example.com", false)]
[Row(""test\rblah"@example.com", true)]
[Row(""testrblah"@example.com", false)]
[Row(@"""test""blah""@example.com", true)]
[Row(@"""test""blah""@example.com", false)]
[Row(@"customer/department@example.com", true)]
[Row(@"$A12345@example.com", true)]
[Row(@"!def!xyz%abc@example.com", true)]
[Row(@"_Yosemite.Sam@example.com", true)]
[Row(@"~@example.com", true)]
[Row(@".wooly@example.com", false)]
[Row(@"wo..oly@example.com", false)]
[Row(@"pootietang.@example.com", false)]
[Row(@".@example.com", false)]
[Row(@"""Austin@Powers""@example.com", true)]
[Row(@"Ima.Fool@example.com", true)]
[Row(@"""Ima.Fool""@example.com", true)]
[Row(@"""Ima Fool""@example.com", true)]
[Row(@"Ima Fool@example.com", false)]

public void EmailTests(string email, bool expected)
{
  string pattern = @"^(?!.)(""([^""r\]|\[""r\])*""|" 
    + @"([-a-z0-9!#$%&'*+/=?^_`{|}~]|(?<!.).)*)(?<!.)" 
    + @"@[a-z0-9][w.-]*[a-z0-9].[a-z][a-z.]*[a-z]$";

  Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
  Assert.AreEqual(expected, regex.IsMatch(email)
    , "Problem with '" + email + "'. Expected "  
    + expected + " but was not that.");
}

Прежде, чем вы назовёте меня жутким занудой и педантом (может, вы и правы, но всё равно погодите), я не думаю, что настолько глубокая проверка email-адресов абсолютно необходима. Большинство email-провайдеров имеют более строгие требования к email-адесам. Например, Yahoo требует, чтобы адрес начинался с буквы. Похоже, что имеется стандартизированный более строгий набор правил, которому следует большинство email-провайдеров, но насколько мне известно, он нигде не задокументирован.

Думаю, я создам email-адрес типа phil.h@@ck@haacked.com и начну жаловаться в техподдержку на сайтах, которые требуют ввода email-адреса, но не позволяют мне создать учётную запись с этим адресом. Люблю шалить!

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

P.S. Исправил несколько ошибок, которые я сделал в моём прочтении RFC. Видите? Даже прочитав RFC, я всё ещё не уверен в том, что же я, блин, делаю! Что ещё раз подтверждает тезис о том, что программисты — не читатели.

author__photo

Содержание

Чтобы сохранить репутацию надежного отправителя, проверяйте качество базы получателей своих рассылок. Если большинство адресов в списке окажутся недействительными (невалидными), потенциальные клиенты не увидят ваши письма, потому что те окажутся в папке «Спам».

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

Что такое валидный email

Валидный адрес – это реальный email, написанный без ошибок. Термин образован от английского слова «valid» – «актуальный», «допустимый», «подлинный». Соответственно, валидация email – действия, направленные на подтверждение, проверку электронного адреса.

Валидацию не пройдут:

  • адреса с опечатками, например: address@uandex.ru;
  • продублированные адреса (повторяющиеся);
  • спам-ловушки – адреса, созданные с помощью специального сервиса для разоблачения спамеров;
  • адреса компаний (корпоративные);
  • анонимные адреса временных почтовых ящиков;
  • адреса с ошибками маршрутизации в домене (неверной MX-записью);
  • адреса, которыми не пользуются долгое время. В «Яндекс.Почте», например, почтовый ящик замораживается и архивируется через 24 месяца.

Зачем проверять email на существование

Наличие невалидных адресов портит статистику email-маркетинга компании и ее репутацию как отправителя. Письма уйдут в спам или вернутся на ваш почтовый ящик, если среди адресатов будут недействительные имейлы. В итоге hard bounce (жесткие возвраты) приведут к блоку почтового ящика.

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

Валидация целесообразна на этапе сбора адресов или финальной подготовки к рассылке. Проводить проверку стоит минимум 2 раза в год. Однако, если база имейлов растет быстро, подтверждать адреса придется перед каждой email-кампанией, чтобы сэкономить рекламный бюджет (оплата сервиса для рассылок зависит от количества получателей).

Оптимизируйте расходы и скорректируйте вашу маркетинговую стратегию с помощью сквозной аналитики Calltouch. Система собирает данные со всех рекламных площадок в одном окне и готовит наглядные отчеты. Используйте бесплатный пробный период (14 дней), чтобы убедиться в эффективности сервиса.

caltouch-platform

Сквозная аналитика Calltouch

  • Анализируйте воронку продаж от показов до денег в кассе
  • Автоматический сбор данных, удобные отчеты и бесплатные интеграции

Узнать подробнее

platform

Кому нужна проверка email-адресов на валидность

Всем компаниям, которые поддерживают связь с ЦА по электронной почте, необходимо регулярно проводить валидацию. Не пренебрегайте проверкой, если вы:

  • используете неподтвержденные адреса, то есть у вас подписка в формате single opt-in, при которой пользователю достаточно просто ввести свой имейл в лид-форму;
  • собираете адреса из офлайн-анкет;
  • используете для рассылки старые базы;
  • выяснили, что ваши письма попадают в спам.

Как проверить валидность почты

Используйте специальные сервисы – валидаторы или верификаторы. Они с точностью до 99% определяют:

  • синтаксис адреса: выявляются адреса с опечатками, корпоративные имейлы, дубли;
  • домен и сервер: устанавливается корректность записи MX;
  • актуальность почтового ящика: отсеиваются адреса неактивных почтовых ящиков.

Инструменты для проверки

Популярные онлайн-сервисы:

  • ePochta Verifier. Скачайте программу, загрузите список и получите отчеты о валидности в удобном формате. Стоимость составляет 4200 рублей, но до оплаты вы можете опробовать инструмент в течение 7 дней.
  • High Speed Verifier. Если нужно мгновенно, буквально за секунду, проверить несколько тысяч адресов, используйте эту программу. Лицензия на год обойдется вам в 1500 рублей. Есть бесплатная, но менее функциональная версия.
  • MailList Validator. Абсолютно бесплатная программа. Проверка нескольких сотен адресов займет пару секунд. Импортировать имейлы можно из нескольких источников.
  • BriteVerify. Сервис быстро проведет массовую проверку не только электронных адресов, но и мобильных номеров. Стоимость – от 40$ за 5000 тысяч адресов.
  • Bouncer. 100 имейлов можно проверить бесплатно, а также воспользоваться пробным периодом по любому тарифу. Подписка стоит от 40$ за 10 тысяч адресов.
  • Bulk Email Verifier. Проверяет быстро большие базы и работает одновременно с разными списками в разных форматах (CSV, TXT). Стоимость – от 25$ за 3000 адресов.
  • DataValidation. Профессиональный сервис с расширенным API и автоматизированным анализом баз. 250 имейлов можно проверить бесплатно. Проверка 5000 адресов обойдется в 30$.
  • Email Checker. Корректирует адреса – удаляет недопустимые символы. Массовая проверка будет стоить минимум 27$.
  • Email List Verify. Проверка 100 имейлов – бесплатна, до 1000 – 4$. Создатели сервиса предлагают более 10 вариантов оплаты и 6 тарифов, стоимостью от 139$.
  • EmailMarker. Работает со множеством форматов: CSV, TXT, XLS, XLSX. За валидацию 1000 адресов вы заплатите 3$. 150 имейлов можно проверить бесплатно.
  • MillionVerifier. За 29$ сервис предоставляет проверку 10 000 адресов. Авторизуйтесь, чтобы получить бонус или скидку.
  • TrueMail. Синхронизируйте сервис с CRM компании, чтобы адреса проверялись автоматически. Первая тысяча адресов – бесплатно, далее это же количество обойдется вам в 7$.
  • Snov.io. В этом сервисе семиуровневая проверка валидности email. Стоимость тарифов – от 39$, а если оплатите годовую подписку – получите 2 месяца бесплатного пользования.
  • SendPulse Verifier. До ста имейлов сервис проверит бесплатно. Оплата – от 208 рублей. На годовую и полугодовую подписки действуют скидки.

Помимо оптимизации email-маркетинга для улучшения имиджа компании важно контролировать качество работы операторов. Используйте технологию речевой аналитики Calltouch Предикт – с ее помощью вы выявите недочеты менеджеров в общении с клиентами и доработаете скрипты продаж. Текстовую расшифровку любого разговора будет легко найти по ключевым словам.

caltouch-platform

Технология
речевой аналитики
Calltouch Predict

  • Автотегирование звонков
  • Текстовая расшифровка записей разговоров

Узнать подробнее

platform

Что делать, чтобы в базу не попадали невалидные адреса

Придерживайтесь следующих рекомендаций:

  • не скупайте готовые базы, постарайтесь собрать адреса самостоятельно;
  • сделайте подписку на ваши рассылки в формате double opt-in (с повторным подтверждением) и предоставьте пользователям возможность отписаться в любой момент;
  • даже если вы уверены, что собираете корректные адреса, периодически проверяйте их на актуальность – не все пользователи оставляют активными свои почтовые ящики.

Коротко о главном

  • Чтобы email-маркетинг был эффективным, проводите валидацию базы получателей.
  • Валидными, то есть действительными, можно считать недублированные и некорпоративные (личные) адреса, которые привязаны к активному почтовому ящику, а также прописанные без ошибок до и после «@».
  • Проверить списки получателей помогут специальные сервисы, среди которых есть и эффективные бесплатные.
  • Валидация email-адресов необходима всем компаниям, взаимодействующим с клиентами через электронную почту.
  • Рассылки в том числе на невалидные адреса приведут к попаданию в спам и дальнейшей блокировке почтового ящика.
  • Проверка валидности email необходима минимум 2 раза в год. Лучше проводить ее перед каждой кампанией.
  • Чтобы избежать сбора невалидных адресов, не скупайте готовые базы и используйте формат двухэтапной подписки.

Дата публикации: 07.09.2022
Время чтения: 7 мин.

Лиана Санамян

ЭКСПЕРТ

Редактор и автор портала Otzyvmarketing.ru. Опыт работы в digital-маркетинге более 5 лет.

Чтобы сделать качественную email-рассылку, нужно учитывать несколько факторов. Один из них — доставляемость писем до клиентов. Важно не попасть в спам и снизить риск блокировки домена. 

Как убедиться в том, то письма будут доставлены? Вам помогут валидные email-адреса. Об этом — в нашей статье. 

Тысячи надёжных каналов для продвижения бизнеса в Telegram

Telega.in — платформа нативных интеграций с блогерами в Telegram. Каждый канал в каталоге проверен вручную, а админы готовы к сотрудничеству — никаких долгих переговоров!

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

Фото: Onlineprinters на Unsplash

Фото: Onlineprinters на Unsplash

Что такое валидный email

Перед тем, как говорить об адресах электронной почты, познакомимся с терминами:

  • имя адреса — все, что написано до собачки (@);
  • домен адреса — то, что следует после. 

Валидный email — это действующий адрес электронной почты, за которым находится активный пользователь.

Чтобы понять, какие адреса стоит использовать, разберем обратный тип адресов — невалидные.

Примеры невалидных адресов:

  • Рабочие адреса с ошибками. Допустим, пользователь неправильно заполнил анкету на сайте: сделал опечатку или перепутал имя почты. На такой адрес ваше письмо не дойдет. 
  • Заброшенная почта. Если человек долго не пользуются ящиком, некоторые сервисы замораживают и архивируют такие аккаунты. 
  • Дубликат. Если в базе данных название почты повторяется, то второй адрес считается невалидным.
  • Корпоративные адреса. Компании могут создавать уникальные имена и домены. Для внутренней коммуникации или работы со своими клиентами. Отправляя рассылку на рабочие адреса, есть высокий риск попасть в папку спам. 
  • Спам-ловушки. Спам-ловушка — это больше инструмент, чем адрес электронный почты. С его помощью сервисы по поиску спама вычисляют источники ненадежных и вирусных рассылок. 
  • Временные адреса. Это одноразовые, либо временно сгенерированные email-адреса. Часто их используют для недобросовестных целей. Несмотря на короткий срок действия, такие адреса также могут попасть в вашу базу клиентов.
  • Адреса с ошибками маршрутизации в домене. У каждого домена должна быть MX-запись. С помощью этой записи регистрируют сервер, на который почтовой агент может пересылать письмо.

Зачем проверять email на валидность

Фото: Justin Morgan на Unsplash

Фото: Justin Morgan на Unsplash

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

1. Сохранение бюджета

Представьте, что вы занимаетесь рассылкой бумажных писем. Вам нужно потратить деньги на бумагу, конверты, марки. После отправки половина писем вернулась обратно, а деньги за расходный материал — нет. То же самое и с email-рассылкой. 

Не стоит ради высоких показателей отправок тратить бюджет. Это тот случай, когда нужно работать не на количество, а качество. Невалидные адреса принесут возвраты, а за ними — риск блокировки вашего аккаунта. 

2. Рост репутации

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

3. Снижение риска блокировки из-за возвратов 

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

Фото: Lindsey LaMont на Unsplash

Фото: Lindsey LaMont на Unsplash

Мягкие возвраты (soft bounce) возникают из-за временных неполадок. Примеры:

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

Мягкие возвраты невозможно получать бесконечно. Во-первых, они могут превратиться в жесткие. Во-вторых, на мягкие возвраты сервисы по рассылкам устанавливают лимиты. Если количество превышено, появляется риск блокировки аккаунта. 

Жесткие возвраты (hard bounce) означают, что письма не доставляются постоянно. Если их много, ваш аккаунт заблокируют.

Причины жестких возвратов: 

  • домен или адрес электронного ящика ненастоящий;
  • пользователь решил автоматически отправлять все ваши письма в спам;
  • сервер пользователя заблокировал вашу рассылку. 

Когда нужно проводить проверку на валидацию адресов? 

1. При первом сборе адресов

Особенно это важно сделать, если адреса собирались вручную. Например, через бумажные анкеты в офлайн-точках компании. Можно получить много ошибок из-за неразборчивых букв клиентов.

2. Профилактическая проверка раз в полгода

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

3. Финальная подготовка к рассылке

Если на этапе сбора адресов валидацию не проводили, то стоит этим заняться на финальном этапе перед рассылкой. Подробно об этом рассказано в видео:

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

Для проверки невалидных адресов есть сервисы — валидаторы или верификаторы. Они различаются тарифами, способом анализа и форматами отчетов. 

1. Онлайн-сервисы

Многие онлайн-сервисы для проверки валидности иностранные. Сейчас часть из них не доступна в России. Делимся примерами сервисов, для которых не нужен VPN.  

QuickEmailVerification

Этот сервис специализируется только на проверке валидности электронных адресов. 

QuickEmailVerification позволяет загрузить списки в CSV, XLS, TXT, XLSX, ODS форматах. Сайт интегрирован с API. Если что-то пойдет не так, вам поможет техподдержка.

Сервис покажет все виды невалидных адресов. Он проверяет MX-записи, показывает корпоративные и одноразовые адреса, опечатки, актуальность домена, спам-ловушки и даже активность вашего клиента.

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

Для проверки большой базы данных нужна подписка. Оплата проходит по PayPal. Напоминаем, что сервис недоступен в России. Но если у вас есть возможность оплатить через PayPal, то смело пробуйте QuickEmailVerification. Минимальный тариф составляет 0,008 $ за один адрес. За такой ценник можно проверить до 3500 адресов.

MailboxValidator

Также бесплатно проверяет до 100 адресов. Платная подписка начинается от 0,02 $ за один email — список в 5000 контактов. Оплата проходит только через иностранные карты. 

У MailboxValidator есть свои особенности. Он показывает результаты по балльно-рейтинговой системе. Чем активнее аккаунт, тем выше балл. Делит адреса на валидные, условно-валидные и невалидные. 

Сервис предоставляет отчеты в CSV-файлах — с ними можно работать в Excel. MailboxValidator исследует адреса на синтаксис, МХ-записи, спам-ловушки, одноразовые ящики. 

MailValidator

Наконец, российский онлайн-сервис — здесь проблем с оплатой точно не будет. 

Это онлайн-валидатор, который позволяет проверить от 150 до 500 000 адресов. Подробный результат можно получить XLSX-файлом, архивом с TXT-файлами.

В MailValidator в течение месяца можно получить 5 бесплатных отчетов. Эти отчеты содержат только 4 блока информации: 

  • подписчики, которые с большей вероятностью получат вашу рассылку;
  • невалидные адреса;
  • адреса, с которых были получены жалобы на вашу рассылку;
  • повторяющиеся адреса.

В платной версии добавляются другие виды адресов: валидные, заброшенные, ненастоящие, временные, корпоративные.

В MailValidator предлагают два вида проверки: экспресс и полную. Полную проверку чаще используют для анализа условно-валидных адресов. Так, можно увидеть почтовую историю загруженного списка.

Первоначальный тариф начинается с лимита до 10 000 адресов: 0,35 рублей за email для экспресс проверки и 0,25 рублей для полной проверки. Чем больше адресов, тем меньше цена за адрес. 

2. Программы-валидаторы

Программы-валидаторы — то, что можно использовать прямо на стационарном компьютере. Отсюда их недостаток: вся база хранится только на одном компьютере. 

Как и любые важные файлы, советуем скопировать анализ базы на сторонний носитель или в облачное хранилище. 

MailList Validator

Полностью бесплатная программа. В MailList Validator можно проверить несколько сотен адресов, импортировать адреса из любых источников. Можно установить свои критерии проверки. На официальном сайте сообщают, что главная задача программы — определить мертвые адреса для эффективной работы с рассылками. 

ePochta Verifier

Можете оценить инструмент бесплатно до 7 дней. Далее — придется купить разовую лицензию за 2400 рублей. 

Программа не устанавливает лимит для количества электронных почт. Импорт и экспорт происходит в разных форматах. Более подробно с программой можно познакомиться в видеоинструкции:

High Speed Verifier

Это отечественная программа для быстрой проверки нескольких тысяч адресов. Есть бесплатная версия с малым функционалом. Чтобы использовать полную, придется купить лицензию. Есть тариф на год — 1500 рублей и два года — 2500 рублей.  

Как избежать невалидных адресов

Невалидные адреса не приносят пользы. Стоит их избегать и периодически искать в своей базе данных. Как это сделать?

  • Заботьтесь о клиентах

Цель email рассылок — это продажи и/или повышение лояльности к компании. Но если ваши письма не нужны клиенту, не будьте навязчивыми и предоставьте возможность для отписки. Куда лучше найти новые адреса, чем быть в спаме у старых подписчиков. 

  • Не экономьте время

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

  • Подключите двойную подписку

Double opt-in  —  подписка через подтверждение почты. То есть при регистрации пользователь должен повторно посетить сайт через письмо-подтверждение.

Да, люди не очень любят совершать дополнительные действия в интернете. При double opt-in есть шанс, что часть подписчиков не захочет заходить на почту. Но такая система позволит получить заинтересованных клиентов с валидными адресами.

  • Лайфхак — обезопасьте свой домен от блокировки

Вы можете отправлять рассылку через субдомен — часть основного домена. Например, info.city.ru будет субдоменом для city.ru. Таким образом, основной домен не попадет в спам. А если субдомен заблокируют, можно создать новый на основе сохранившегося домена. 

  • Не забывайте о валидаторах

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

Полезное видео с инструкцией для валидации адресов здесь:

 

Заключение

Итак, валидные email-адреса — то, что будет приносить положительные результаты для ваших рассылок. С ними вы избежите попадания в спам и блокировку. Сможете повысить репутацию домена — а это намного важнее, чем большая цифра в базе данных с недействительными адресами. 

Вам понравилась статья?

1

0

Предположим, у вас есть простая задача — создать форму, которая даст пользователю возможность подписаться на e-mail оповещения. Разумеется, вам необходимо предотвратить ввод в эту форму всякого мусора, при этом не должно получаться так, чтобы валидный адрес вдруг был забракован системой.

Как же выглядит e-mail адрес? Интуитивно можно предположить, что так:

// Пример адреса:
johndoe@example.com
 
// В виде составных частей:
${MAILBOX}@${SUBDOMAIN}.${TLD}
 
// Регулярка, которую можно было бы использовать
[a-zA-Z0-9]+@[a-zA-Z0-9]+.[a-zA-Z0-9]+

Выглядит хорошо, но это совершенно не тот случай, когда стоит доверять интуиции. Доверять следует спецификации. А спецификация говорит нам следующее:

// Пропущен домен? Всё нормально, письмо уйдёт на локаль!
john-doe
 
// Да, это тоже валидно, но такого ящика не существует с вероятностью 99%
john-doe@com
 
// И это валидно, но доменов из одной буквы не существует
john-doe@example.c
 
// Оу, мы кажется забыли про субдомены. Мы же не можем просто забыть про .co.uk?
john@doe.example.com
 
 
// Да, IP адрес в качестве сервера это тоже нормально
john@[192.168.1.1]
 
// По спецификации подходит, но такой домен не может быть зарегистрирован
john@-doe.com
 
// А ещё можно делать так:
john.doe@example.com
 
// Но нельзя так:
john..doe@eaxmple.com
.john@example.com
john.@example.com

Конечно, и тут можно обойтись с помощью регулярного выражения:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[x01-x08x0bx0cx0e-x1fx21x23-x5bx5d-x7f]|\[x01-x09x0bx0cx0e-x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[x01-x08x0bx0cx0e-x1fx21-x5ax53-x7f]|\[x01-x09x0bx0cx0e-x7f])+)])

Но с этим есть несколько проблем:

  • Как вы будете проверять правильность этого монстра? Такие регулярные выражения переходят «из уст в уста» на форумах, и каждый добавляет в них функциональность до тех пор, пока работа с выражением становится невозможной. И это именно тот случай.
  • Я бы не сказал, что регулярные выражения такой длины эффективнее, чем другие методы. Чем длиннее выражение, тем дольше оно будет компилироваться (сравнение всегда происходит за O(n)).
  • С помощью регулярного выражения можно сделать только проверку на соответствие. Выполнить проверку на то, находится ли домен в чёрном списке, у вас уже, увы, не получится.

Давайте пойдём другим путём

Вот основа нашей проверки:

char[] input; // Строка, которую нужно проверить
int index = 0; // Итератор для input
char ch; // Текущий символ (input[index])
int state = 0; // Состояние проверки (-1 для ошибки)
 
while (index <= input.length && state != -1) {
 
	if (index == input.length) {
		ch = ''; // Символ, по которому проверка прекращается
	}
	else {
		ch = input[index];
	}
 
	switch (state) {
		// case 0: {...
	}
 
	index++;
}

А вот диаграмма, описывающая алгоритм, по которому наша программа будет работать:

emailaddrfsm

Если вы заметили, что тут не все правила соблюдаются — не волнуйтесь, мы вернёмся к этому позже. Если вы не заметили, и вообще не понимаете, что тут происходит, то сейчас объясню.

Вершина графа — состояние проверки. Ребро графа — прочитанный символ. Если в результате считывания символа невозможно перейти ни по одному ребру, значит, адрес не валиден. Вот, например, как будет реализована первая часть этого алгоритма:

simplecountingfsm

case 0: {
	if (ch >= 'a' && ch <= 'z') {
		count++; 
		break; // State stays the same
	}
	if (ch == '') {
		state = 1; // EOL
		break;
	}
	state = -1; // Error
	break;
}

Теперь о проверках, которые мы сделаем, после того, как код пройдёт по этой диаграмме:

public class Validator {
 
	public static boolean isValid(final char[] input) {
		int state = 0;
		char ch;
		int index = 0;
		String local = null;
		ArrayList<String> domain = new ArrayList<String>();
 
		// Код проверки по диаграмме
		// [..]
 
		// Не прошло валидацию
		if (state != 6)
			return false;
 
		// Домен должен быть по меньшей мере второго уровня
		if (domain.size() < 2)
			return false;
 
		// RFC 5321 ограничивает длину имени ящика до 64 символов
		if (local.length() > 64)
			return false;
 
		// RFC 5321 ограничивает длину адреса до 254 символов
		if (input.length > 254)
			return false;
 
		// Доменная зона должна состоять только из букв и быть по меньше мере два символо длинной
		index = input.length - 1;
		while (index > 0) {
			ch = input[index];
			if (ch == '.' && input.length - index > 2) {
				return true;
			}
			if (!((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))) {
				return false;
			}
			index--;
		}
 
		return true;
	}
}

Собираем всё вместе

public class EmailValidator {
 
	public static boolean isValid(final char[] input) {
		if (input == null) {
			return false;
		}
 
		int state = 0;
		char ch;
		int index = 0;
		int mark = 0;
		String local = null;
		ArrayList<String> domain = new ArrayList<String>();
 
		while (index <= input.length && state != -1) {
			
			if (index == input.length) {
				ch = ''; // Так мы обозначаем конец нашей работы
			}
			else {
				ch = input[index];
				if (ch == '') {
					// символ, которым мы кодируем конец работы, не может быть частью ввода
					return false;
				}
			}
 
			switch (state) {
 
				case 0: {
					// Первый символ {atext} -- текстовой части локального имени
					if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')
							|| (ch >= '0' && ch <= '9') || ch == '_' || ch == '-'
							|| ch == '+') {
						state = 1;
						break;
					}
					// Если встретили неправильный символ -> отмечаемся в state об ошибке
					state = -1;
					break;
				}
 
				case 1: {
					// Остальные символы {atext} -- текстовой части локального имени
					if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')
							|| (ch >= '0' && ch <= '9') || ch == '_' || ch == '-'
							|| ch == '+') {
						break;
					}
					if (ch == '.') {
						state = 2;
						break;
					}
					if (ch == '@') { // Конец локальной части
						local = new String(input, 0, index - mark);
						mark = index + 1;
						state = 3;
						break;
					}
					// Если встретили неправильный символ -> отмечаемся в state об ошибке
					state = -1;
					break;
				}
 
				case 2: {
					// Переход к {atext} (текстовой части) после точки
					if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')
							|| (ch >= '0' && ch <= '9') || ch == '_' || ch == '-'
							|| ch == '+') {
						state = 1;
						break;
					}
					// Если встретили неправильный символ -> отмечаемся в state об ошибке
					state = -1;
					break;
				}
 
				case 3: {
					// Переходим {alnum} (домену), проверяем первый символ
					if ((ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9')
							|| (ch >= 'A' && ch <= 'Z')) {
						state = 4;
						break;
					}
					// Если встретили неправильный символ -> отмечаемся в state об ошибке
					state = -1;
					break;
				}
 
				case 4: {
					// Собираем {alnum} --- домен
					if ((ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9')
							|| (ch >= 'A' && ch <= 'Z')) {
						break;
					}
					if (ch == '-') {
						state = 5;
						break;
					}
					if (ch == '.') {
						domain.add(new String(input, mark, index - mark));
						mark = index + 1;
						state = 5;
						break;
					}
					// Проверка на конец строки
					if (ch == '') {
						domain.add(new String(input, mark, index - mark));
						state = 6;
						break; // Дошли до конца строки -> заканчиваем работу
					}
					// Если встретили неправильный символ -> отмечаемся в state об ошибке
					state = -1;
					break;
				}
 
				case 5: {
					if ((ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9')
							|| (ch >= 'A' && ch <= 'Z')) {
						state = 4;
						break;
					}
					if (ch == '-') {
						break;
					}
					// Если встретили неправильный символ -> отмечаемся в state об ошибке
					state = -1;
					break;
				}
 
				case 6: {
					// Успех! (На самом деле, мы сюда никогда не попадём)
					break;
				}
			}
			index++;
		}
 
		// Остальные проверки
 
		// Не прошли проверку выше? Возвращаем false!
		if (state != 6)
			return false;
 
		// Нам нужен домен как минимум второго уровня
		if (domain.size() < 2)
			return false;
 
		// Ограничения длины по спецификации RFC 5321
		if (local.length() > 64)
			return false;
 
		// Ограничения длины по спецификации RFC 5321
		if (input.length > 254)
			return false;
 
		// Домен верхнего уровня должен состоять только из букв и быть не короче двух символов
		index = input.length - 1;
		while (index > 0) {
			ch = input[index];
			if (ch == '.' && input.length - index > 2) {
				return true;
			}
			if (!((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))) {
				return false;
			}
			index--;
		}
 
		return true;
	}
}

Перевод статьи «Validating Email Addresses with a Regex? Do yourself a favor and don’t»

Вы хоть раз задавались вопросом: «Что такое валидный email?». Скорее всего «да», если вы постоянно занимаетесь  email-рассылками от своего лица или лица какой-то компании. Отправителю рассылок важно, чтобы  email клиента был валидным и база контактов была максимально «чистой». Это в первую очередь влияет на репутацию компании, рассылающую письма, но также имеет техническую подоплеку. Об этом всем, мы поговорим чуть ниже в статье.

Для тех, кто не в курсе, «валидный email» это адрес электронной почты, который реально существует и закреплен за каким-то определенным человеком. В некоторых случаях, если электронная почта работает, но служит для корпоративных целей, она будет невалидной для рассылки.

Валидный  email — что это?

Термин «валидный» получился из слова на английском языке «valid», что означает «действующий», «годный», «действительный».

Таким образом, «невалидный email» это:

  1. Электронный адрес, который записан с ошибкой, как в имени почты, так и в ее доменной части.

  2. Если рассматривать базу контактов, тогда — каждый дублирующий  email будет невалидным. По крайней мере, сервисы проверки валидации  email-адресов, считают дубликаты невалидными.

  3. Специализированные адреса, которые служат ловушками для спама. То есть при помощи таких адресов вычисляют спамеров.

  4. Электронные адреса, которые служат корпоративным целям компании.  Таким адресам обычно дают имя «hr», «pr», «info» и др.

  5. Специализированные электронные адреса с коротким сроком жизни. Некоторые пользователи заводят такие адреса, для регистрации на сомнительных площадках или просто чтобы не афишировать собственный реальный адрес. «Время жизни» таких адресов разное и может составлять всего несколько  минут.

  6. Электронная почта, которой долгое время не пользовались.

Для чего важна проверка валидности  email

Когда вы совершаете массовые рассылки по большим базам контактов, вам важно, чтобы максимальное количество адресов в списке рассылки были валидными. Все письма, отправленные на невалидные адреса определяются в «спам», либо возвращаются. Чем интенсивнее растет количество таких писем, тем сильнее это влияет на репутацию лица, занимающегося рассылкой.

Например, за большое  количество «жестких возвратов» отправляемых писем, сервис по рассылке писем может заблокировать аккаунт отправителя. «Жесткие возвраты» происходят по следующим причинам:

  • email-адрес не существует;

  • домен, на котором зарегистрирована почта, не существует;

  • сервер, на котором расположена почта получателя, заблокировал рассылку;

  • получатель самостоятельно заблокировал рассылку.

Также на блокировку аккаунта отправителя в сервисе рассылки могут повлиять  «мягкие возвраты». Самостоятельно они не приводят к блокировке, но если «мягких возвратов» слишком много, тогда они переходят в категорию «жестких возвратов», из-за которой может произойти блокировка аккаунта. «Мягкие» возвраты происходят по разным причинам, например:

  • технические неполадки на сервере получателя;

  • слишком много текста в пересылаемом письме;

  • у получателя не хватает места в почтовом аккаунте;

  • и др.

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

  • в базе будут преобладать адреса, у которых снижен риск попадания в спам;

  • домен отправителя будет обладать высоким рейтингом доверия;

  • более высокий процент доставляемости писем;

  • и др.

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

Что такое валидный  email: как происходит проверка валидности

Что такое валидный  email? Мы разобрались. Это  email-адрес, которым постоянно пользуется определенный пользователь.  Проверка валидности  email-адресов — это важное мероприятие для отправителя массовых рассылок. Теперь давайте разберемся, как происходит проверка валидности.

Проверка валидности  email происходит по следующим пунктам:

  • проверяется синтаксис  email-адреса, на наличие ошибок и «корпоративности»;

  • проверяется доступность домена и сервера, на котором находится почта получателя;

  • проверяется активность  email-адреса.

Проверку валидности  email-а осуществляет специальная программа-валидатор. Валидатор может быть 2-х видов:

  • валидатор, который осуществляет онлайн-проверку;

  • валидатор, который инсталлируется на компьютер.

Важно отметить, что практически все валидаторы предоставляют услугу за определенную плату. Бесплатно можно проверить сотню-другую  адресов, что по большому счету не спасает ситуацию, потому что, как правило, базы контактов состоят из тысяч email-ов.

Онлайн-валидаторы:

  1. «Brite Verify». 0,01$ за проверку одного адреса.

  2. «Bouncer». 100 адресов проверяет бесплатно, а далее тариф 20-500$ в месяц.

  3. «Bulk Email Verifier». Тариф: 25$ за 3000  email-адресов.

  4. «Data Validation». 500 адресов бесплатно, а далее тариф от 0,007$ за один  email.

  5. «Email Checker». Тариф: 14 долларов за 1000  email.

  6. «Email List Verify». 100  адресов бесплатно. А далее тариф от 0,003$ за один  email или месячная подписка.

  7. «Email Marker». 150 адресов бесплатно, а далее тариф от 21 доллара за месяц пользования сервисом.

  8. «Kick Box». 100 адресов бесплатно, а далее тариф  0.008$ за один  email.

  9. «Mailfloss». Бесплатно первую неделю, а далее тариф от 17 долларов за месяц пользования сервисом.

  10. «Never Bounce». 1000 адресов бесплатно, а далее от 0,008$ за один  email.

Валидаторы для  email-адресов, которые инсталлируются на компьютер:

  1. «ePochta Verifier». Стоимость лицензии 2400 рублей РФ, можно попробовать бесплатно.

  2. «High Speed Verifier». Можно использовать бесплатно, но с ограничениями,  либо по подписке 1500 рублей РФ в год.

  3.  «Mail List Validator». Бесплатная программа для частного использования.

Заключение

Валидный  email — это электронный адрес, которым пользуется определенный пользователь, а значит он не принесет проблем отправителю писем. Если вы отправитель больших рассылок, значит периодическая проверка валидности вашей базы email-адресов обязательна. Благо, инструментов для проверки валидности баз контактов достаточно много на любой вкус и кошелек.

Понравилась статья? Поделить с друзьями:
  • Как написать валентинку подруге
  • Как написать валентинку парню
  • Как написать валентинку однокласснику
  • Как написать валентинку мальчику 15 лет
  • Как написать валентинку девочке