Хитрость в том, чтобы сразу определить значение слова «действительный».
Мы разработчики — технические ребята, так что наиболее логичным будет проверить на соответствие официальным критериям. Вот некоторые примеры валидных адресов email, которые соответствуют критериям.
en.wikipedia.org/wiki/Email_address#Valid_email_addresses
Всё, что вы знаете, неправильно
Вышеупомянутый пример проверки с помощью regex во многом игнорирует реальность. Вместо этого я полагаю, что нам нужно задать два вопроса:
- Понимает ли пользователь, что от него требуется ввести адрес электронной почты в это поле?
- Правильно ли он ввёл свой адрес в поле?
Если у вас хорошо заметная форма с подписью "email" и пользователь где-то в этой форме ввёл символ ‘@’, то будет безопасно предположить, что ответ на первый вопрос положительный. Это легко.
Далее мы хотим проверить, что пользователь правильно ввёл свой адрес электронной почты.
Невозможно.
Важно, чтобы вы согласились со мной в данном тезисе: это невозможно.
Я знаю, что вы думаете. «Но это поможет, верно?» Ну это как быстрое закрытие холодильника сохранит энергию и поможет бороться с глобальным потеплением. Конечно поможет, если мы хотим стать рабами слова «поможет». Но большинство людей согласятся, что вам светит многообещающая карьера в смирительной рубашке, если вы грохочете консервами ради спасения белых медведей.
Исследуем вопрос
Представим, что мой адрес электронной почты davidgilbertson@example.com. Это 27 нажатий на клавиатуре, которые могут привести к опечатке. Ошибка в любом символе определённо приведёт к вводу неправильного адреса, но необязательно этот адрес будет недействительным.
[прозрение]
Даже если бы в окно ярко засветило солнце, меня одолел особенно дикий чих (я страдаю от
Так какова вероятность, что одна любая опечатка сделает адрес недействительным? Сделаем статистическую модель! Например, вот буква ‘g’. Я скорее допущу опечатку на видимой клавиатуре без нажатого Shift (в модели я учитываю «неизменённые» клавиши). Среди всех клавиш, которые можно нажать на физической клавиатуре, есть только шесть символов, которые в некоторых случаях могут сделать адрес недействительным: []\;, и пробел. 6 из 48. Вероятность 12%.
Но более вероятна опечатка на соседнюю клавишу. Например, нажатие на ‘h’ вместо ‘g’. Так что из списка 117 млн существующих почтовых адресов я вычислил частотность каждого символа, для каждого из них записал, какие клавиши находятся рядом из клавиатуре, и вывел итоговую вероятность того, что опечатка приведёт к недействительному адресу (знаю, что взламывать LinkedIn ради рассуждения о валидации почтовых адресов было немного чересчур, но любое мнение важно подтвердить реальными данными).
Например, символ ‘e’ считается символом с низким риском инвалидации, потому что все окружающие символы оставят адрес электронной почты по-прежнему действительным. Но рядом с ‘p’ есть ‘[’ и ‘;’ на расстоянии нажатия! Так что хотя это более редкий символ, чем ‘e’, но он несёт больший риск превращения адреса в недействительный, если по клавише промахнулись.
Я также принял расчёт относительную ловкость каждого пальца. Мы все знаем, что мизинец — умственно отсталый родственник в семействе пальцев, так что и это учитывается.
Графическое представление модели, показывающей зону опечатки вокруг P, с учётом недостатков мизинца
Теперь предположим, что Силки (фокс) сидит на клавише Shift и я нажимаю неправильную клавишу на клавиатуре. Здесь я рискую попасть по одной из шести опасных клавиш: []\;, и пробел. И опять, они делают адрес недействительным только при определённых условиях. Более вероятно, что нажатая клавиша Shift будет действовать только для букв с одной стороны «собачки» в адресе, так что буква ‘l’ с любой стороны считается особенно опасной.
Все сказанное относится к единственной опечатке, но если я сделаю вторую опечатку, то есть вероятность, что адрес станет опять действительным (например, если добавить \ после \). Конечно, всё это учитывается в модели.
Не стоит говорить, что я приложил такие же усилия в расчёте модели для экранных клавиатур.
Помните также, что если допустить опечатку в символе @, то ошибка будет учтена на самом первом этапе, когда мы проверяем наличие @ как намерение пользователя ввести адрес электронной почты.
Я также встроил в модель немного здравого смысла. Известно, что люди с адресом aol.com неумело набирают текст. Дерилы склонны нажимать все клавиши указательным пальцем, как будто боятся, что каждая кнопка обожжёт руку. Люди с буквой ‘z’ в имени используют механические клавиатуры и редко делают ошибки. Известные жизненные аксиомы.
Я также учёл факт, что любая кнопка перед «собачкой» в адресе игнорируется, и что ‘f’ и ‘h’ во многом одна и та же буква, если хорошенько подумать.
Результат
Итак, приняв в расчёт все факторы, я пропустил 117 миллионов адресов через модель. И вероятность, что некорректный адрес электронной почты будет зафиксирован программой валидации адресов составил…
0,00000000000000000000000000000000000000625%
Боюсь, что у меня нет времени набирать алгоритм, который абсолютно точно существует и неоспоримо безупречен, так что вам придётся поверить мне на слово, что это число никоим образом не выдумано.
Итог
Бессмысленно пытаться выяснить, является ли адрес «действительным». Пользователь с гораздо большей вероятностью введёт неправильный и действительный адрес, чем недействительный.
Поэтому лучше потратить своё время буквально на любое другое дело, чем проверять валидность адресов электронной почты.
На 100% правильный способ
Высылайте пользователям письмо активации. (Здесь жирная точка для эффекта).
Я опубликовал продолжение этой статьи в первую очередь о том, как помочь пользователям избежать ввода неправильного адреса электронной почты. С реальным кодом! Вперёд. Читайте.
Если вам кажется, что эта статья бессмысленная и глупая, и вы хотите ещё такого же, оцените мой подкаст «Дэвид читает Википедию». Он именно о том, о чём вы подумали.
Комментарии (98)
kloppspb
27.01.2017 01:24+20На 100% правильный способ
Высылайте пользователям письмо активации.
<sarcasm>Неужели! Наконец-то! Даже не верю что мы дождались первой статьи на хабре, в которой об этом сказано открытым текстом!</sarcasm>TimsTims
27.01.2017 18:44Да, дождались!
Ждем еще пару лет, чтобы из статьи убрать кучу воды, и два предложения:
1) Правильная валидация email: @
2) Проверка существования email: отправить письмо
Akuma
27.01.2017 01:53Еще небольшое улучшение. Добавить активцию в приветственное письмо. Что-то вроде:
Добро пожаловать на наш мега-крутой сайт,
мы сильно вам рады, поэтому вот вам классная кнопка чтобы быстрее перейти на сайт/сделать покупку:
КНОПКА (Ведет на сайт и сразу активирует Емаил)
— Это иногда работает лучше, чем кнопка «Активировать/Подтвердить», но зависит от аудитории.
johny
27.01.2017 06:30+7Как же бесят валидаторы, которые считают, что кроме символов [a-z\-\.@] больше ничего в адресе электронной почты не существует. Они даже плюс заворачивают как недействительный символ.
za90
27.01.2017 07:21Статья так быстро и толково закончилась (с 4" читал). Большая редкость, эта ваша сестра!)
PS: кто такие «дерилы»?cheshirrrr
27.01.2017 08:51+2Может это отсылка к американским реднекам?
Первой строкой в гугле на имя «Daryl» вылезает Daryl Dixon из «Ходячих мертвецов», как раз представитель стереотипных реднеков.
evil_kabab
27.01.2017 08:05-16Если адрес электропочты критичен, тогда есть смысл спросить его ДВА раза и отключить копи-пейст на обоих полях. Заставить юзера два раза напечатать его эл. адрес.
UksusoFF
27.01.2017 09:02+5Вы уверены что два раза напечатать будет менее ошибочно чем скопипастить из тхт из которого пользователь всю жизнь копипастит?
evil_kabab
29.01.2017 14:14Оба раза должны совпасть конечно же.
UksusoFF
29.01.2017 16:56И что? На не привычной клавиатуре например вполне можно набрать два раза не правильно. Кнопка какая-то может западать. Да мало ли вариантов.
cheshirrrr
27.01.2017 09:11+11Только сперва задумайтесь настолько ли нужен пользователю именно ваш сайт, что он будет дважды ручками вводить свой e-mail.
wladyspb
27.01.2017 18:08+1Когда можно копипастить — копипащу из первого во второе. Когда нельзя — я действительно задумаюсь, а надо ли мне тут региться. Лишние поля — зло в любом случае.
evil_kabab
29.01.2017 14:16Я про серьезные сайты сейчас… На чем-то менее серьезном хватит и 1 раз имейл. Или фейсбук
merlin-vrn
27.01.2017 10:21-4я в упор не понимаю, зачем пароль скрывают и два раза просят ввести, ведь все пишут его в keepass/etc., а потом копипастят в оба поля, а вы ещё и с адресом предлагаете извращаться
когда вижу такое извращение, единственная мысль — ну что за дебилы собралисьpsFitz
27.01.2017 11:34+3Все пароли храню в голове и 2 раза вводить помогает от опечаток.
Зачем скрывать пароль и так понятно, что-бы работник майков, который следит за вашим экраном не увидел.
Iora
27.01.2017 11:42+3ведь все пишут его в keepass/etc., а потом копипастят в оба поля
Все?! То есть по-вашему, пароли никто не помнит, м? Бедные люди.lobzanoff
27.01.2017 14:13+1У меня, к примеру, несколько десятков паролей, и все вида «o9uG@:JZbqcYCh*o=;DPsf~L»
Вы всерьез полагаете, что у всех такая же эйдетическая память как у Шелдона Купера?!Charg
27.01.2017 14:51+1> У меня, к примеру, несколько десятков паролей, и все вида «o9uG@:JZbqcYCh*o=;DPsf~L»
Ну ладно, а следует ли из этого утверждения что подобные пароли — у всех?aosja
27.01.2017 16:58+1Все-не все — это не важно. Важно то, что разработчик не заботится об удобстве пользователя и запрещает копи-паст. А если я потерял пароль или забыл? Как меня спасет то, что я смог без ошибок х-раз его ввести вручную при регистрации? Всегда должна быть возможность восстановить пароль, а не парить с ручным вводом.
maxdedepol
27.01.2017 12:14+1Я в 90% случаев увидев 2 email просто ухожу, в 10% сайт как бы нужен, но я всегда копирую первое поле и если мне ещё и это не дадут сделать, то скорее всего я пойду искать конкурента у которого нет таких заморочек.
goodwin98
27.01.2017 18:17А почему нет варианта отправлять самим пользователем письмо с каким-то уникальным ключом?
Тогда ошибки не будет 100%
ElForastero
27.01.2017 08:05-2http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
Don't mention it…
kefirfromperm
27.01.2017 08:49-7Очередная статья о том, что вместо того чтобы решать проблему, её можно проигнорировать. А давайте сформулируем задачу так: найти в произвольном тексте все email-адреса. По одной лишь собаке будете искать?
OtshelnikFm
27.01.2017 10:24Проверять что введен символ собаки и что минимум есть еще 2 символа a@a
Вопрос такой есть — если регистрируешься через мобильное приложение, а там надо подтвердить регистрацию. Потом надо сворачивать приложение, идти в браузер на почту, через почту кликаю на ссылке подтверждения и… куда я попадаю? В это мобильное приложение или откроется ссылка в браузере?
Потом опять возвращаться в мобильное приложение?
Тут от этой логики у меня сорвало клапаны… Проясните.Virasio
27.01.2017 10:44Ну хорошо сделанные сайты после активации автоматом в приложение перекидывают. А в почту пользователь обычно попадает из прилетевшего пуш-уведомления о новом письме.
alexeykuzmin0
27.01.2017 11:04По крайней мере у меня на андроиде этот процесс выглядит куда проще.
1. Зашел на сайт/в приложение, вбил все данные, зарегистрировался.
2. Приходит push-уведомление от GMail о приходе письма, тыркаю на него.
3. Открывается письмо, в нем кнопка или ссылка, тыркаю на нее.
4. Открывается браузер, в нем новая вкладка говорит «хозяин, готово». Тыркаю на кнопку «назад».
5. Грузится опять приложение GMail с тем самым письмом, тыркаю еще раз назад.
6. Открывается та самая вкладка в браузере или приложение. Иногда надо еще тыркнуть на «обновить».
Итого 5 или 6 тапов, весь процесс занимает не более 10 секунд и какого-то отторжения не вызывает.
Urichalex
27.01.2017 11:07мобильным приложением можно перехватывать определенные ссылки.
Определяем, что пользователь отправил на активацию с мобильного, формируем ссылку для мобильного, клиент ее тычет, андроид спрашивает, как ее открыть, браузером или приложением
Virasio
27.01.2017 10:41+1Кажется я уже читал нечто подобное… У меня в гугле первая статья по запросу «валидация email»: https://habrahabr.ru/post/175375/ Я года два назад оригинал той статьи заказчику скидывал, когда он приставал ко мне с валидацией.
miksoft
27.01.2017 10:49Пользователь с гораздо большей вероятностью введёт неправильный и действительный адрес, чем недействительный.
Вероятно, это зависит от аудитории. По моей практике — точно наоборот. Неправильный и действительный адрес был едва ли один за несколько лет. А вот недействительные каждый день вводят.
Вот что стоит, имхо, проверять, так это опечатки самых распространенных доменов. У нас это самая популярная ошибка, примерно четверть от всех недействительных адресов.Kliba
27.01.2017 12:44Опечатка в домене в 99% сделает адрес неправильным, недоступным, но не недействительным. Недействительным его сделает только несоответствие стандарту.
zirix
27.01.2017 10:53+1Можно проверять существование домена и mx записи на нем.
Небольшой процент ощибок этот метод поймает.jetexe
27.01.2017 11:23и очень сильно увеличит отклик формы и не совсем понятно зачем. Рядовой случай такой:
- регистрация пускает в профиль (юзер с минимальными правами но уже у нас в безе)
- отправка письма подтверждения
- Активация аккаунта.
Зачем тут проверять MX? и что это конкретно даст? гарантию того что на домене есть почтовый сервер?
Ну допустим у нас человек опечатался и ввел mael.ru и что дальше? MX у этого домена есть.
Или забыл что нужно вводить gmail.com, а не google.com, и не google.ru, и даже не gmail.ru (такой MX тоже есть)
И адрес валидный, и MX есть, вот только почта указана неверно
alexeykuzmin0
27.01.2017 11:27Я вам больше скажу: есть немало народу с почтой на google.com
jetexe
27.01.2017 11:31На всех приведенных мной примерах есть настоящие электронные почты настоящих людей.
В случае с google.* это сотрудники компании
grossws
28.01.2017 22:29И сломает кучу товарищей, которые до сих пор не добавили MX, но используют A. И такое MTA вполне допускают.
nikitasius
30.01.2017 10:08Далеко ходить не надо, сейчас без dmarc, dkim, spf, MX и r-dns (которая соотв. ответу мейлсервера) письма будут улетать в спам. Причем у гугла это еще более менее человечно, а у мелкософта — не глядя.
grossws
30.01.2017 19:25DMARC, благо, пока не является обязательным условием для жизни, как и DKIM. А настроить MX, rev DNS и SPF — дело недолгое.
Гугл больше бесит отправкой легитимных писем из рассылок в spam, а иногда их отбрасыванием, чего очень не любят ezmlm и mailman. Меня из некоторых списков рассылки так выкидывало. И крайне неприятно, когда это какой-нибудь members@apache.org, а не просто какой-нибудь high traffic dev@.
nikitasius
31.01.2017 00:02А что трудного в том, чтобы настроить dmarc и dkim?
grossws
31.01.2017 11:19Для разумного админа, наверное, ничего сложного. Просто настроить какой-нибудь opendkim — дело нехитрое. Несколько больший геморрой (административный, в первую очередь) — управления ключами на всех серверах, которые отправляют почту наружу, управление доверенными хостами и подобные вещи.
nikitasius
31.01.2017 16:25Там в ключах прописан домен. Ничего не мешает скопировать такой ключ на «второй» сервер, который отправляет почту по тому же домену. Да и перегенерировать их не нужно.
В идеале будет вот так:
картинка
fpinger
27.01.2017 11:05А ведь можно на основе «правильной» проверки отсеять кучу спамеров и особо одарённых. И это прекрасно для большинства сервисов. :P
reforms
27.01.2017 11:06Хороший перевод, спасибо. С автором статьи согласен.
Но мне показалось, что к первым двум пунктам:
1. Понимает ли пользователь, что от него требуется ввести адрес электронной почты в это поле?
2. Правильно ли он ввёл свой адрес в поле?
Обязательно нужно добавить 3 — А насколько Вашему сервису важно знать валидный адрес пользователя?
И мыслей здесь несколько:
1. Со времен появления сотовых телефонов значимость почты в разрезе возможности идентификации пользователя и обратной связи с ним резко упала.
2. Что важней, что пользователь получит возможность приносить Вам прибыль, пользуясь Вашим сервисом (например ввиде покупки товаров и т.п.) или обязательная доставка рекламы на его почтовый адрес?
Но справедливость ради скажу, что участвовал в проекте где были четкие бизнес требования на проверку введенного пользователем адреса (не массовый продукт) и связано это было с внутренним регламентом компании-закаpчика (ограничение по допустимым доменам и именам до собаки)
Так что всякое бывает.
ruslanfedoseenko
27.01.2017 11:42Реальность email-а можно проверить подключившись к SMTP серверу и якобы пытаться отправить письмо. Адрес сервера можно вытащить из MX записей жлмена. После указания адреса кому отправляем большинство почтовых серверов отвечают ошибкой в случае отсутствия аккаунта, что свидетельствует об ошибке ввода или попытке ввести фейковый адрес.
miksoft
27.01.2017 11:56+1Реальность email-а можно проверить подключившись к SMTP серверу и якобы пытаться отправить письмо.
Далеко не всегда.
Например, у нас на работе тот сервер, который отвечает по MX-записи, не является конечным сервером и не содержит список всех адресов домена, а лишь принимает и передает все без разбору письма следующему серверу, который уже и занимается сортировкой писем по ящикам.
Такая схема была распространена во времена диалапа, когда связь с интернетом была эпизодической. Собственно, с тех времен она у нас и сохранилась.
jetexe
27.01.2017 12:03окей, адрес существует, просто чужой не rfedoseenko@mail а efedoseenko@mail, соседние буковки, банальная опечатка
xRay
27.01.2017 11:46-2Т.е. валидация не нужна и пихаем в базу все что пользователь там ввел? Серьзно?
xxxFeLiXxxx
27.01.2017 12:18+2Именно так, а если валидация через ссылку в мейле не прошла на протяжении TTL — то удаляем из базы.
nikitasius
27.01.2017 12:17Согласитесь это классно:
-какой у тебя мейл?
-#!$%&’*+-/=?^_`{}|~@example.com
-??
-слеш затем...
Какой смысл в таких ящиках, если нормальный человек (неsup3r}{ack3%-@example.com
) будет использовать [-_.0-9a-z] слева от @?kimisa
27.01.2017 12:34Я тоже так считаю, что рядовой пользователь будет вводить символы a-z0-9, ну и край — и +. Все остальные извращенцы составят примерно 1% от основного состава. Задумайтесь, а нужны ли они вам?
P.S. Это каким нужно быть извращенцем, чтобы каждый раз вводить свою почту в виде #!$%&’*+-/=?^_`{}|~@example.com?nikitasius
27.01.2017 13:37Я вам скажу больше, у меня почта вида
a@abc.ab
(там 3 буквенный домен в 2 буквенной зоне), с которой стоит форванд на основной [a-z] ящик.
Делал специально, чтобы люди (в том числе иностранцы) не имели проблем записать мой мейл из телефонного разговора… с другой стороны они меня каждый раз спрашивают (кто слышет в первый раз), не ошибся ли я в почте, мол она неправильная на их взгляд, так как люди привыкли к хотмейлам и гмейлам.kimisa
27.01.2017 13:45Я об этом и веду речь. Почти все привыкли слышать и читать ящики в буквенно-цифровом виде и плюс еще тире. Если выходишь за рамки общепринятых обозначений, то начинают переспрашивать и уточнять. Поэтому есть ли смысл пропускать такие исключения? Если это не сайт гиков программистов или сисадминов. ;) Вот реально можно ожидать всё, что угодно. Но вот какова вероятность встретить такие адреса?
Jogger
27.01.2017 16:21+4А какой смысл отсеивать таких пользователей? Не могу придумать никакой причины для этого кроме «хочу чтобы меня кто-нибудь ненавидел».
kimisa
27.01.2017 16:25Зато достаточно по валидации определиться /^[a-zа-яё0-9_\-\.]{2,30}@[a-zа-яё0-9_\-\.]{1,40}$/iu
Может и не идеально, но почти все нормальные ящики сюда можно загнать.Jogger
27.01.2017 17:35+4Ещё раз спрашиваю — ЗАЧЕМ? Вы делаете дополнительную проверку, исполняете дополнительный код, который кто-то дополнительно разработал — а из «полезных» результатов — только увеличение энтропии во вселенной и ненависть нескольких человек по отношению к вам. Вам шашечки или ехать?
nikitasius
28.01.2017 00:20Как минимум ящики надо проверять, а не ловить ошибки от мейлера.
А далее — уже личное дело каждого. Кто девушку ужинает, тот ее и танцует, только в плане сервера. Каждый админ это художник, он делает так видит… в лучшую или худшую стороны.
Да и RFC… если оставить [\w\.\-_] юзеров, то никто и не пострадает… в большей массе.
И RFC RFC рознь.Скрытый текстЯ вот сейчас занят конфигуратором для NSD, меня от RFC по DNS просто тошнит, в итоге я просто взял исходник NSD и по ним делаю базу и конфигуратор. Если уж NSD не 100% соотв. RFC (например по длине полей), то и мой продукт будет так же не полностью соответствовать.Jogger
28.01.2017 00:54+1Вы так и не ответили на главный вопрос — зачем? Зачем проверять ящики? Ну усложните вы кому-то с необычным ящиком жизнь, вам-то что от этого? Столько усилий только для того, чтобы кому-то нагадить? Ведь то, что ящик соответствует вашему шаблону — не гарантирует того, что мейлер не вывалит ошибку (потому что домена например не существует), и не грантирует того, что емейл введён верно (если например опечатались в имени). Это не даст ничего ни вам, ни вашему приложению. Ну, разве что если вы работник на ставке и вам нужно изобразить бурную деятельность, а то что результат бесполезен — не ваша проблема?
nikitasius
29.01.2017 01:01-2Так можно и данные на SQL проверять, и сразу в базу!
На самом деле все просто — почта такая, как я писал выше, она серая и убогая. Талантливые и яркие }{aцkeрbI@ идут лесом искать другие сервисы (=делать другую почту), так как скрипты, которые вероятно что-то делают или как-то обрабатывают ящики (я ничего с мыльниками не делаю) могут сломаться, и значит из надо переписать, что ломает. Следом уязвимости (как в пхпмейлеров), хрен знает что еще найдут, но она не взлетит, если система просто проигнорит такую почту.
Дискуссию не о чем. Я, например, не люблю, когда в базе каша в адресах, значит у меня и все подконтрольные сервера не примут такие ящики. Дале хуже… у меня вообще пачка проверок на клиентов (которые ко мне лезут на коннект), в том числе и на reverse dns, и если что-то не нравится — reject.Jogger
29.01.2017 01:11+2Спасибо, теперь мне всё ясно. Синдром вахтёра в терминальной стадии. Вопросов больше не имею.
grossws
28.01.2017 22:39Да и RFC… если оставить [\w.-_] юзеров, то никто и не пострадает…
Только
ВасяПупкин+майор@мвд.рф
xD
grossws
28.01.2017 22:37+1И адрес nikitasius из примера выше не пройдёт, т. к. перед
@
всего 1 символ.kimisa
29.01.2017 07:29-4Если ящик один в один такого типа, то я еще таких не встречала. Поэтому пусть идет и регенет нормальный ящик.
nikitasius
30.01.2017 10:06Лол, разница между
- оставить числа, буквы и -._
- тоже самое + 2+ символа слева от @
Видна невооруженным глазом.
grossws
28.01.2017 22:34А ещё
-
,_
и.
часто используются. Видел кучу рабочих адресов видаname.lastname@...
,lastname.f@...
и т. п.
mwambanatanga
27.01.2017 18:42-1Как там с девушкой (той, с мылом #!$%&’*+-/=?^_`{}|~@example.com)? Всё склеилось?
dpantele
28.01.2017 19:35А почему никто не валидирует e-mail через oauth-like механизм? И почему ещё gmail не предоставляет возможности web-подтверждения подписок на рассылки/указания e-mail при регистрации? Это же на 100% решает проблему распознавания спама для активационных e-mail.
cheshirrrr
30.01.2017 10:39+2Google давно уже это сделал. Называется «регистрация через Google-аккаунт»
androidformax
31.01.2017 13:15Как проверить адрес на правильность?
— Никак.
— Высылайте проверочные письма!
З.Ы. Это если кому лень читать полет фантазии автора статьи…
NeonLost
Как раз недавно выпиливал проверку email в одном из приложений, полностью согласен с автором. Все проверки бессмысленны, единственное, что стоит проверить это наличие собаки в строке.
Vahan
Не все так просто (-:
brizzz
А за что заминусили? Годный коммент. В пользу того что всё-таки валидировать email адреса на соответствие стандартам не помешает.
Vahan
Наверное минус за то, что swiftmail уже запатчили.