Андрей Смирнов
Время чтения: ~9 мин.
Просмотров: 89

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

На 100% правильный способ проверки адресов электронной почты

ПрограммированиеРегулярные выражения Перевод Автор оригинала: David Gilbertson Поздравляю. C сегодняшнего дня вы никогда не будете тратить время, подбирая самое оптимальное регулярное выражение для проверки адреса электронной почты. И вы никогда больше не отклоните адрес, который к вашему удивлению оказался действительным. Хитрость в том, чтобы сразу определить значение слова «действительный». Мы разработчики — технические ребята, так что наиболее логичным будет проверить на соответствие официальным критериям. Вот некоторые примеры валидных адресов email, которые соответствуют критериям.e44e876e34e442cf75e534f636d54017.pngen.wikipedia.org/wiki/Email_address#Valid_email_addresses Вышеупомянутый пример проверки с помощью regex во многом игнорирует реальность. Вместо этого я полагаю, что нам нужно задать два вопроса:

  1. Понимает ли пользователь, что от него требуется ввести адрес электронной почты в это поле?
  2. Правильно ли он ввёл свой адрес в поле?

Если у вас хорошо заметная форма с подписью «email» и пользователь где-то в этой форме ввёл символ ‘@’, то будет безопасно предположить, что ответ на первый вопрос положительный. Это легко. Далее мы хотим проверить, что пользователь правильно ввёл свой адрес электронной почты. Невозможно. Важно, чтобы вы согласились со мной в данном тезисе: это невозможно. Я знаю, что вы думаете. «Но это поможет, верно?» Ну это как быстрое закрытие холодильника сохранит энергию и поможет бороться с глобальным потеплением. Конечно поможет, если мы хотим стать рабами слова «поможет». Но большинство людей согласятся, что вам светит многообещающая карьера в смирительной рубашке, если вы грохочете консервами ради спасения белых медведей. Представим, что мой адрес электронной почты davidgilbertson@example.com. Это 27 нажатий на клавиатуре, которые могут привести к опечатке. Ошибка в любом символе определённо приведёт к вводу неправильного адреса, но необязательно этот адрес будет недействительным. [прозрение] Даже если бы в окно ярко засветило солнце, меня одолел особенно дикий чих (я страдаю от светового чихательного рефлексаПлохо изученное аутосомно-доминантное заболевание — прим.пер.) и я по ошибке напечатал #!$%&’*+-/=?^_`{}|~@example.com — так вот, я всё равно пройду большинство проверок на «действительный» адрес электронной почты. (Ещё хуже, если система скажет, что адрес недействительный, когда он на самом деле существует! Ради интереса я только что написал на адрес #!$%&’*+-/=?^_`{}|~@example.com — и девушка сказала, что её ужасно бесит, когда её адрес электронной почты считают недействительным. Она также жалеет о покупке домена example.com, но не собирается сдаваться, как и тот парень, купивший milk.com. Мы начали чатиться, и оказалось, что она живёт всего в паре кварталов от меня и тоже собирает винтажные камеры; на следующей неделе мы пойдём играть в гольф. Я думаю, может она и есть та самая. Впрочем, нужно мне заканчивать болтать и продолжить писать статью). Так какова вероятность, что одна любая опечатка сделает адрес недействительным? Сделаем статистическую модель! Например, вот буква ‘g’. Я скорее допущу опечатку на видимой клавиатуре без нажатого Shift (в модели я учитываю «неизменённые» клавиши). Среди всех клавиш, которые можно нажать на физической клавиатуре, есть только шесть символов, которые в некоторых случаях могут сделать адрес недействительным: [];, и пробел. 6 из 48. Вероятность 12%. Но более вероятна опечатка на соседнюю клавишу. Например, нажатие на ‘h’ вместо ‘g’. Так что из списка 117 млн существующих почтовых адресов я вычислил частотность каждого символа, для каждого из них записал, какие клавиши находятся рядом из клавиатуре, и вывел итоговую вероятность того, что опечатка приведёт к недействительному адресу (знаю, что взламывать LinkedIn ради рассуждения о валидации почтовых адресов было немного чересчур, но любое мнение важно подтвердить реальными данными). Например, символ ‘e’ считается символом с низким риском инвалидации, потому что все окружающие символы оставят адрес электронной почты по-прежнему действительным. Но рядом с ‘p’ есть ‘[’ и ‘;’ на расстоянии нажатия! Так что хотя это более редкий символ, чем ‘e’, но он несёт больший риск превращения адреса в недействительный, если по клавише промахнулись. Я также принял расчёт относительную ловкость каждого пальца. Мы все знаем, что мизинец — умственно отсталый родственник в семействе пальцев, так что и это учитывается.85b38e1c1e10e5e11b4dc4fa8c83e66b.pngГрафическое представление модели, показывающей зону опечатки вокруг P, с учётом недостатков мизинца Теперь предположим, что Силки (фокс) сидит на клавише Shift и я нажимаю неправильную клавишу на клавиатуре. Здесь я рискую попасть по одной из шести опасных клавиш: [];, и пробел. И опять, они делают адрес недействительным только при определённых условиях. Более вероятно, что нажатая клавиша Shift будет действовать только для букв с одной стороны «собачки» в адресе, так что буква ‘l’ с любой стороны считается особенно опасной. Все сказанное относится к единственной опечатке, но если я сделаю вторую опечатку, то есть вероятность, что адрес станет опять действительным (например, если добавить после ). Конечно, всё это учитывается в модели. Не стоит говорить, что я приложил такие же усилия в расчёте модели для экранных клавиатур. Помните также, что если допустить опечатку в символе @, то ошибка будет учтена на самом первом этапе, когда мы проверяем наличие @ как намерение пользователя ввести адрес электронной почты. Я также встроил в модель немного здравого смысла. Известно, что люди с адресом aol.com неумело набирают текст. Дерилы склонны нажимать все клавиши указательным пальцем, как будто боятся, что каждая кнопка обожжёт руку. Люди с буквой ‘z’ в имени используют механические клавиатуры и редко делают ошибки. Известные жизненные аксиомы. Я также учёл факт, что любая кнопка перед «собачкой» в адресе игнорируется, и что ‘f’ и ‘h’ во многом одна и та же буква, если хорошенько подумать. Итак, приняв в расчёт все факторы, я пропустил 117 миллионов адресов через модель. И вероятность, что некорректный адрес электронной почты будет зафиксирован программой валидации адресов составил… 0,00000000000000000000000000000000000000625% Боюсь, что у меня нет времени набирать алгоритм, который абсолютно точно существует и неоспоримо безупречен, так что вам придётся поверить мне на слово, что это число никоим образом не выдумано. Бессмысленно пытаться выяснить, является ли адрес «действительным». Пользователь с гораздо большей вероятностью введёт неправильный и действительный адрес, чем недействительный. Поэтому лучше потратить своё время буквально на любое другое дело, чем проверять валидность адресов электронной почты. Высылайте пользователям письмо активации. (Здесь жирная точка для эффекта).

Я опубликовал продолжение этой статьи в первую очередь о том, как помочь пользователям избежать ввода неправильного адреса электронной почты. С реальным кодом! Вперёд. Читайте. Если вам кажется, что эта статья бессмысленная и глупая, и вы хотите ещё такого же, оцените мой подкаст «Дэвид читает Википедию». Он именно о том, о чём вы подумали.

Как доказать владение почтой при регистрации аккаунта

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

Сообщение со ссылкой или кодом для подтверждения отправляется на ваш почтовый ящик после ввода логина, пароля и прочих сведений, необходимых для регистрации. Укажите в форме Email и нажмите кнопку для отправки сообщения или кнопку завершения регистрации.

podtverdit-adrelpct-2-550x361.jpg

Теперь перейдите к сайту, где у вас зарегистрирован Email, и авторизуйтесь. Зайдите в раздел «Входящие» и откройте соответствующее письмо.

podtverdit-adrelpct-3-550x201.jpg

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

podtverdit-adrelpct-4-550x330.jpg

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

Зачем подтверждать почту

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

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

Читать еще:  How to change language firefox

podtverdit-adrelpct-1-550x401.jpg

Обратите внимание!

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

168802241_894_5c63edd5cf6b5.png

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

168802241_897_5c63ede5ad65d.png

  • Нельзя добавить один и тот же email несколько раз с разными именами.

Возможные проблемы

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

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

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

podtverdit-adrelpct-5-550x421.jpg

Иногда причиной может стать неправильный электронный адрес. Например, с такой проблемой сталкиваются пользователи при регистрации на зарубежных сайтах с помощью Yandex или Mail.ru. Попробуйте создать аккаунт на Гугле и повторить регистрацию/подтверждение заново. Если вы не можете создать новый профиль, то через настройки привяжите другую почту (если сайт предоставляет подобную возможность).

Gmail иногда помещает письма для подтверждения в раздел «Соцсети» или «Промоакции». Обязательно проверьте данную вкладку.

podtverdit-adrelpct-6-550x168.jpg

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

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

Используемые источники:

  • https://m.habr.com/ru/post/320572/
  • https://microclimate.su/brauzery/vvedite-dejstvitelnyj-kod-adresa-elektronnoj-pochty.html

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации