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

Я знал, как валидировать email-адрес. Пока не прочитал RFC

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Что за судья без языка

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

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

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

Источник

Валидация email

Подготовка

Перед тем как писать валидацию, надо знать из чего состоит email адрес. Думаю известно всем что это «username@hostname». Лучше всего будет разбить создание регэкспа на 2 логические части — валидация hostname и валидация username. Начнём с более объёмного.

Валидация hostname

Для начала подумаем, а из чего же состоит hostname?

Имя хоста состоит из нескольких компонентов, разделённых точкой и не превышающих 63 символа, и суффиксов (домены первого уровня). Компоненты, в свою очередь, состоят из латинских букв, цифр и дефисов, причём дефисы не могут быть в начале или в конце компонента. Суффиксы это ограниченный список доменов первого уровня (я нашёл список на сайте IANA). Для упрощения выражения запишем домены стран как [a-z][a-z] (любые 2 символа от a до z не зависимо от регистра). Так же не будем использовать не латинские символы, пока они официально не введены в публичное пользование. В итоге получим выражение проверяющее суффикс (конструкция (foo|bar) говорит о том что происходит поиск либо foo либо bar, т.е. заменяет или):

Для компонентов код будет посложнее:

[a-z0-9] # обязательная буква латинского алфавита или цифра
([-a-z0-9]<0,61>[a-z0-9])? # необязательная часть
\. # точка

Рассмотрим необязательную часть:

# дефис ставиться на первое место в группе символов, иначе он принимается за промежуток
# <0,61>после группы символов означает, что группа может повторятся от 0 до 61 раза
[-a-z0-9]<0,61>
# 61 для того, чтобы в группе не было более 63 символов в сумме
[a-z0-9]

В итоге мы получили выражение отвечающее за проверку hostname:

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

Валидация username

На самом деле тут все просто: 1 или более символ [-a-z0-9!#$%&’*+/=?^_`

В итоге

Регэксп проверки email:

Это выражение можно каплю оптимизировать (про оптимизацию, я думаю, будет отдельная статья):

Бонус

Рассмотрим регэксп, который привели в пример в комментарии к вступительному топику:

Источник

Проверка email на валидность: содержим базу контактов в чистоте и порядке!

Проверка email на валидность – обязательный этап, прежде чем вы начнете массовую рассылку. Только так вы сможете быть на 100% уверены в успехе отправки и высокой доставляемости сообщений. Предлагаем досконально разобраться в этом вопросе и узнать:

После прочтения материала вы сможете решать этот вопрос самостоятельно и использовать такую проверку на благо проекта.

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

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

Существуют программы и сервисы, чтобы выявлять существование email. Их принято называть верификаторами/валидаторами. В первую очередь в них заинтересованы те компании, которые занимаются email-маркетингом для себя или клиентских проектов.

Читайте также:  Что делать когда ожог глаза сваркой

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

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

Это так называемая «одношаговая» подписка Single opt-in, ее еще принято называть «подпиской без подтверждения». Она очень облегчает рост подписной базы, но это «медвежья услуга», так как вы получаете не валидный электронный адрес раз за разом:

Чтобы подстраховаться, воспользуйтесь двухфакторной подпиской (Double opt-in). Суть в том, чтобы клиент обязательно подтверждал свой адрес электронной почты, словно заверяя свое намерение подписаться на рассылку.

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

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

Если вы запустили рассылку, но не проверили базу адресов, а сервис обнаружил, что больше 10% из них невалидные, вы рискуете быть заблокированными. Разумное решение – срочно остановить рассылку, чтобы немедленно проверить существующие контакты на актуальность. Так вы исключите нецелевую трату средств и предотвратите порчу репутации. Конечно, те адреса, которые попали уже в отправку будут вычищены автоматически на основании полученных ошибок в доставке. Их сервис обрабатывает автоматически.

«И все-таки они существуют!» Зачем обязательно нужно проверять электронный адрес?

Проверка валидности email становится необходимым рабочим инструментам, если вы рассылаете сообщения по старой базе либо отмечаете, что становится все больше возвратов, так как автовозврат – общепризнанный маркер Bounce Rate. Существует сразу несколько профитов после запуска проверки на валидность:

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

Жесткие возвраты демонстрируют реальную причину, почему письмо не попало в ящик адресата:
– Отсутствие введенного email.
– Несуществующий домен.
– Блокировка сервером подписчиков.

Большое количество жестких отказов по рассылке – повод для блокировки. Классический предел несуществующих адресов – 10%, так что лучше прямо сейчас заняться проверкой.

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

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

Если доставляемость высокая, то репутация вашего домена будет расти. Это значит, что валидация – оптимальный инструмент для профилактики попадания в папку со спамом и блокировки.

Как валидаторы проверят существование почты?

Как сервисы-валидаторы проверяют каждый ящик и узнают, существует ли он? Это происходит в несколько этапов:

Читайте также:  Что за масло м10дм

ТОП инструментов: проверяйте email с удовольствием!

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

Даша.Фиксик – наша гордость

Рады сообщить вам о наличие внутреннего сервиса нашего проекта. С его помощью вы определите и исправите некорректные почтовые адреса подписчиков. Каждые сутки DashaMail отправляет порядка 10 000 000 писем. Конечно, среди них есть определенная доля возвратов, в том числе жестких. Мы работаем для того, чтобы исправить ситуацию, именно поэтому и был создан «сервис исправлений» Даша.Фиксик.

Он фильтрует адреса уже на этапе импорта базы в сервис, работая с перечнем условий, которым соответствует любой «живой» адрес:

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

Валидатор DashaMail

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

Дополнительный бонус, который дает такая проверка email, – это поднятие показателей ROI. Ведь вам не приходится оплачивать сервис за невалидных подписчиков!

ZeroBounce

Этот сервис также помогает проверять базу. Он ищет информацию о клиентах и помечает это в отчетах:

Mailvalidator: все для качественной базы

Mailvalidator — еще один достойный сервис для устранения проблем с базой, которым проводится проверка email на валидность:

MailboxValidator – просто и результативно

Проект EmailMarker: валидатор, проверенный временем

Об EmailMarker многие могли слышать, так как это один из старейших, но при этом мощнейших инструментов, которым осуществляется проверка email на валидность. Он может проверить бесплатно до 150 контактов из базы. Среди отличительных особенностей:

Проект Xverify для массовой и единой проверки

Сервис BulkEmailVerifier: прощайте, потенциально опасные адреса

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

Можно выделить несколько особенностей работы с этой площадкой по проверке email на валидность:

Можно ли не «коллекционировать» невалидные адреса?

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

Подводя итоги

Проверка email на валидность – базовая задача каждого, кто занимается рассылками. В статье сервис DashaMail рассмотрел пошагово, как происходит процесс очистки. Настало время кратко резюмировать все сказанное выше:

Самое время сделать мощный рывок вперед и использовать возможности рассылки в полном объеме, а мы в этом поможем.

Источник

Adblock
detector