Содержание
На 100% правильный способ проверки адресов электронной почты
ПрограммированиеРегулярные выражения Перевод Автор оригинала: David Gilbertson Поздравляю. C сегодняшнего дня вы никогда не будете тратить время, подбирая самое оптимальное регулярное выражение для проверки адреса электронной почты. И вы никогда больше не отклоните адрес, который к вашему удивлению оказался действительным. Хитрость в том, чтобы сразу определить значение слова «действительный». Мы разработчики — технические ребята, так что наиболее логичным будет проверить на соответствие официальным критериям. Вот некоторые примеры валидных адресов email, которые соответствуют критериям.en.wikipedia.org/wiki/Email_address#Valid_email_addresses Вышеупомянутый пример проверки с помощью regex во многом игнорирует реальность. Вместо этого я полагаю, что нам нужно задать два вопроса:
- Понимает ли пользователь, что от него требуется ввести адрес электронной почты в это поле?
- Правильно ли он ввёл свой адрес в поле?
Если у вас хорошо заметная форма с подписью «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’, но он несёт больший риск превращения адреса в недействительный, если по клавише промахнулись. Я также принял расчёт относительную ловкость каждого пальца. Мы все знаем, что мизинец — умственно отсталый родственник в семействе пальцев, так что и это учитывается.Графическое представление модели, показывающей зону опечатки вокруг P, с учётом недостатков мизинца Теперь предположим, что Силки (фокс) сидит на клавише Shift и я нажимаю неправильную клавишу на клавиатуре. Здесь я рискую попасть по одной из шести опасных клавиш: [];, и пробел. И опять, они делают адрес недействительным только при определённых условиях. Более вероятно, что нажатая клавиша Shift будет действовать только для букв с одной стороны «собачки» в адресе, так что буква ‘l’ с любой стороны считается особенно опасной. Все сказанное относится к единственной опечатке, но если я сделаю вторую опечатку, то есть вероятность, что адрес станет опять действительным (например, если добавить после ). Конечно, всё это учитывается в модели. Не стоит говорить, что я приложил такие же усилия в расчёте модели для экранных клавиатур. Помните также, что если допустить опечатку в символе @, то ошибка будет учтена на самом первом этапе, когда мы проверяем наличие @ как намерение пользователя ввести адрес электронной почты. Я также встроил в модель немного здравого смысла. Известно, что люди с адресом aol.com неумело набирают текст. Дерилы склонны нажимать все клавиши указательным пальцем, как будто боятся, что каждая кнопка обожжёт руку. Люди с буквой ‘z’ в имени используют механические клавиатуры и редко делают ошибки. Известные жизненные аксиомы. Я также учёл факт, что любая кнопка перед «собачкой» в адресе игнорируется, и что ‘f’ и ‘h’ во многом одна и та же буква, если хорошенько подумать. Итак, приняв в расчёт все факторы, я пропустил 117 миллионов адресов через модель. И вероятность, что некорректный адрес электронной почты будет зафиксирован программой валидации адресов составил… 0,00000000000000000000000000000000000000625% Боюсь, что у меня нет времени набирать алгоритм, который абсолютно точно существует и неоспоримо безупречен, так что вам придётся поверить мне на слово, что это число никоим образом не выдумано. Бессмысленно пытаться выяснить, является ли адрес «действительным». Пользователь с гораздо большей вероятностью введёт неправильный и действительный адрес, чем недействительный. Поэтому лучше потратить своё время буквально на любое другое дело, чем проверять валидность адресов электронной почты. Высылайте пользователям письмо активации. (Здесь жирная точка для эффекта).
Я опубликовал продолжение этой статьи в первую очередь о том, как помочь пользователям избежать ввода неправильного адреса электронной почты. С реальным кодом! Вперёд. Читайте. Если вам кажется, что эта статья бессмысленная и глупая, и вы хотите ещё такого же, оцените мой подкаст «Дэвид читает Википедию». Он именно о том, о чём вы подумали.
Как доказать владение почтой при регистрации аккаунта
Перейдем к процедуре подтверждения адреса электронной почты. Чаще всего пользователи сталкиваются с данной операцией или сразу после регистрации аккаунта, или при первой авторизации на странице/сервисе. В редких случаях вы должны самостоятельно привязывать Email через настройки аккаунта или приложения.
Сообщение со ссылкой или кодом для подтверждения отправляется на ваш почтовый ящик после ввода логина, пароля и прочих сведений, необходимых для регистрации. Укажите в форме Email и нажмите кнопку для отправки сообщения или кнопку завершения регистрации.
Теперь перейдите к сайту, где у вас зарегистрирован Email, и авторизуйтесь. Зайдите в раздел «Входящие» и откройте соответствующее письмо.
В письме должна быть указана ссылка, по которой нужно кликнуть для завершения операции. В результате перехода на исходный сайт вы увидите уведомление о том, что аккаунт успешно подтвержден! Но некоторые сайты используют несколько другой способ – это комбинация цифр или символов. Вам необходимо скопировать или запомнить код, а затем ввести его в соответствующее поле. Например, по такому принципу подтверждается почта при регистрации в Twitter.
При создании профиля в другом сервисе или соцсети в письме может быть указана ссылка как в виде обычного адреса сайта, так и в виде кнопки. Переходите по ним смело, если сообщение прислано от официального адреса сайта.
Зачем подтверждать почту
Процедура подтверждения почтового ящика присутствует практически на всех сайтах в обязательной или опциональной форме. У результата есть несколько полезных последствий:
- привязанный адрес позволит восстановить доступ к аккаунту в случае взлома или утери пароля;
- на почту приходят уведомления о новостях, связанных с сервисом, вашим аккаунтом;
- при попытке взлома или авторизации вы получите уведомление по почте;
- при авторизации с чужих или новых устройств сможете подтвердить статус владельца с помощью ссылки в письме на подтвержденной почте.
Читать еще: How to change language firefox
Обратите внимание!
- При небходимости, Вы можете указать имя отправителя (данное имя будет подставляться в заголовки письма). Для этого просто внестите изменения в поле с именем и нажмите на галочку рядом.
- Вы можете удалить адрес из списка. Однако, стоит учитывать, что данный список адресов используется во всей системе управления. Кроме того, настоятельно рекомендуем Вам с осторожностью удалять адреса и не забывать, что они могут использоваться в каких-либо разделах системы управления.
- Нельзя добавить один и тот же email несколько раз с разными именами.
Возможные проблемы
Нередко пользователи сталкиваются с проблемами при подтверждении почтового ящика. Рассмотрим самые распространенные ситуации.
Одна из главных проблем – это бесконечное ожидание письма. Первое, что необходимо предпринять – это повторная попытка отправки сообщения спустя некоторое время. Подождите пару минут и повторите процедуру. Если письма нет, рекомендуется сделать следующее:
- проверьте папку «Спам». Многие сайты автоматически определяются почтовыми сервисами в категорию рекламы и спама. Возможно, что сейчас тот самый случай.
- добавьте адрес соцсети, сервиса или сайта в контакт-лист своего Email. Возможно, после этого почтовый ящик автоматически добавит новое сообщение в список входящих.
- проверьте черный список, если вы активно пользуетесь данной опцией. Вероятно, что данный сайт или почтовый адрес был добавлен в ЧС. Извлеките его при обнаружении.
Иногда причиной может стать неправильный электронный адрес. Например, с такой проблемой сталкиваются пользователи при регистрации на зарубежных сайтах с помощью Yandex или Mail.ru. Попробуйте создать аккаунт на Гугле и повторить регистрацию/подтверждение заново. Если вы не можете создать новый профиль, то через настройки привяжите другую почту (если сайт предоставляет подобную возможность).
Gmail иногда помещает письма для подтверждения в раздел «Соцсети» или «Промоакции». Обязательно проверьте данную вкладку.
Если предыдущие методы не помогли решить проблему, то проверьте возможности сервиса, где вы регистрируетесь. Возможно, что сайт или приложение предлагают альтернативный метод подтверждения с помощью мобильного номера. Укажите свой телефон и дождитесь SMS с кодом, который нужно вписать в соответствующее поле на сайте. Тогда ваш аккаунт будет подтвержден!
Чтобы подтвердить адрес электронной почты, достаточно дождаться письма, убедиться в его подлинности, перейти по ссылке/нажать кнопку/ввести присланный код. Если система не попросила подтверждения в момент регистрации, то выполните операцию самостоятельно через настройки.
Используемые источники:
- https://m.habr.com/ru/post/320572/
- https://microclimate.su/brauzery/vvedite-dejstvitelnyj-kod-adresa-elektronnoj-pochty.html