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

Автор оригинала: David Gilbertson
  • Перевод
Поздравляю. C сегодняшнего дня вы никогда не будете тратить время, подбирая самое оптимальное регулярное выражение для проверки адреса электронной почты. И вы никогда больше не отклоните адрес, который к вашему удивлению оказался действительным.

Хитрость в том, чтобы сразу определить значение слова «действительный».

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


en.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’, но он несёт больший риск превращения адреса в недействительный, если по клавише промахнулись.

Я также принял расчёт относительную ловкость каждого пальца. Мы все знаем, что мизинец — умственно отсталый родственник в семействе пальцев, так что и это учитывается.


Графическое представление модели, показывающей зону опечатки вокруг P, с учётом недостатков мизинца

Теперь предположим, что Силки (фокс) сидит на клавише Shift и я нажимаю неправильную клавишу на клавиатуре. Здесь я рискую попасть по одной из шести опасных клавиш: []\;, и пробел. И опять, они делают адрес недействительным только при определённых условиях. Более вероятно, что нажатая клавиша Shift будет действовать только для букв с одной стороны «собачки» в адресе, так что буква ‘l’ с любой стороны считается особенно опасной.

Все сказанное относится к единственной опечатке, но если я сделаю вторую опечатку, то есть вероятность, что адрес станет опять действительным (например, если добавить \ после \). Конечно, всё это учитывается в модели.

Не стоит говорить, что я приложил такие же усилия в расчёте модели для экранных клавиатур.

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

Я также встроил в модель немного здравого смысла. Известно, что люди с адресом aol.com неумело набирают текст. Дерилы склонны нажимать все клавиши указательным пальцем, как будто боятся, что каждая кнопка обожжёт руку. Люди с буквой ‘z’ в имени используют механические клавиатуры и редко делают ошибки. Известные жизненные аксиомы.

Я также учёл факт, что любая кнопка перед «собачкой» в адресе игнорируется, и что ‘f’ и ‘h’ во многом одна и та же буква, если хорошенько подумать.

Результат


Итак, приняв в расчёт все факторы, я пропустил 117 миллионов адресов через модель. И вероятность, что некорректный адрес электронной почты будет зафиксирован программой валидации адресов составил…

0,00000000000000000000000000000000000000625%

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

Итог


Бессмысленно пытаться выяснить, является ли адрес «действительным». Пользователь с гораздо большей вероятностью введёт неправильный и действительный адрес, чем недействительный.

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

На 100% правильный способ


Высылайте пользователям письмо активации. (Здесь жирная точка для эффекта).

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



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

Подробнее
Реклама

Комментарии 98

    +12
    Как раз недавно выпиливал проверку email в одном из приложений, полностью согласен с автором. Все проверки бессмысленны, единственное, что стоит проверить это наличие собаки в строке.
      0
        0
        А за что заминусили? Годный коммент. В пользу того что всё-таки валидировать email адреса на соответствие стандартам не помешает.
          0
          Наверное минус за то, что swiftmail уже запатчили.
      +20
      На 100% правильный способ
      Высылайте пользователям письмо активации.

      <sarcasm>Неужели! Наконец-то! Даже не верю что мы дождались первой статьи на хабре, в которой об этом сказано открытым текстом!</sarcasm>
        0

        Да, дождались!


        Ждем еще пару лет, чтобы из статьи убрать кучу воды, и два предложения:
        1) Правильная валидация email: @
        2) Проверка существования email: отправить письмо

        0
        Еще небольшое улучшение. Добавить активцию в приветственное письмо. Что-то вроде:

        Добро пожаловать на наш мега-крутой сайт,
        мы сильно вам рады, поэтому вот вам классная кнопка чтобы быстрее перейти на сайт/сделать покупку:

        КНОПКА (Ведет на сайт и сразу активирует Емаил)

        — Это иногда работает лучше, чем кнопка «Активировать/Подтвердить», но зависит от аудитории.
          +1
          Прям антисовет. Почти никто не читает приветственные письма.
            +1
            Зависит от аудитории.
            Если бы их ни кто не читал, эти письма и не рассылал бы никто.
          0
          Только вот как всегда, замечательны слова любой статьи разбиваются о реальность — никто их не читает, а если читает — то не следует им.
            +2
            Пятница! Выдыхай ))
            +14
            <input type="email">
            

            и пусть разработчики браузеров об этом беспокоятся, а не я
              0
              Это решит только п.1.
                +10
                Только его и нужно решать.
              +7
              Как же бесят валидаторы, которые считают, что кроме символов [a-z\-\.@] больше ничего в адресе электронной почты не существует. Они даже плюс заворачивают как недействительный символ.
                +1
                Приведенный Вами валидатор еще и цифры посчитает недействительными :)
                  +1
                  Больше всего бесят валидаторы, которые не пропускают email адреса из не .com/.org доменов
                    0
                    Это они так «борются» со спамом и ботами. Общался с техподдержкой одного сервиса, который патологически заворачивал ru именно по этой причине.
                  0
                  Статья так быстро и толково закончилась (с 4" читал). Большая редкость, эта ваша сестра!)

                  PS: кто такие «дерилы»?
                    +2
                    Может это отсылка к американским реднекам?
                    Первой строкой в гугле на имя «Daryl» вылезает Daryl Dixon из «Ходячих мертвецов», как раз представитель стереотипных реднеков.
                    +3
                    На моей памяти, это уже четвёртая или пятая статья про валидацию имейла.
                      +1
                      В пятничном формате первая. Всем добра в этом треде.
                      –16
                      Если адрес электропочты критичен, тогда есть смысл спросить его ДВА раза и отключить копи-пейст на обоих полях. Заставить юзера два раза напечатать его эл. адрес.
                        +5

                        Вы уверены что два раза напечатать будет менее ошибочно чем скопипастить из тхт из которого пользователь всю жизнь копипастит?

                          0
                          Оба раза должны совпасть конечно же.
                            0
                            И что? На не привычной клавиатуре например вполне можно набрать два раза не правильно. Кнопка какая-то может западать. Да мало ли вариантов.
                          +11
                          Только сперва задумайтесь настолько ли нужен пользователю именно ваш сайт, что он будет дважды ручками вводить свой e-mail.
                            +1
                            Когда можно копипастить — копипащу из первого во второе. Когда нельзя — я действительно задумаюсь, а надо ли мне тут региться. Лишние поля — зло в любом случае.
                              0
                              В случае с большинством интернет магазинов ответ очевиден.
                                0
                                Я про серьезные сайты сейчас… На чем-то менее серьезном хватит и 1 раз имейл. Или фейсбук
                                –4
                                я в упор не понимаю, зачем пароль скрывают и два раза просят ввести, ведь все пишут его в keepass/etc., а потом копипастят в оба поля, а вы ещё и с адресом предлагаете извращаться

                                когда вижу такое извращение, единственная мысль — ну что за дебилы собрались
                                • НЛО прилетело и опубликовало эту надпись здесь
                                    +3
                                    ведь все пишут его в keepass/etc., а потом копипастят в оба поля


                                    Все?! То есть по-вашему, пароли никто не помнит, м? Бедные люди.
                                      +1
                                      У меня, к примеру, несколько десятков паролей, и все вида «o9uG@:JZbqcYCh*o=;DPsf~L»
                                      Вы всерьез полагаете, что у всех такая же эйдетическая память как у Шелдона Купера?!
                                        +1
                                        > У меня, к примеру, несколько десятков паролей, и все вида «o9uG@:JZbqcYCh*o=;DPsf~L»

                                        Ну ладно, а следует ли из этого утверждения что подобные пароли — у всех?
                                          +1
                                          Все-не все — это не важно. Важно то, что разработчик не заботится об удобстве пользователя и запрещает копи-паст. А если я потерял пароль или забыл? Как меня спасет то, что я смог без ошибок х-раз его ввести вручную при регистрации? Всегда должна быть возможность восстановить пароль, а не парить с ручным вводом.
                                    +1

                                    Копирующие из блокнотика обидятся и уйдут.

                                      +1
                                      Я в 90% случаев увидев 2 email просто ухожу, в 10% сайт как бы нужен, но я всегда копирую первое поле и если мне ещё и это не дадут сделать, то скорее всего я пойду искать конкурента у которого нет таких заморочек.
                                        0
                                        Как же я тебя ненавижу!
                                          0
                                          А почему нет варианта отправлять самим пользователем письмо с каким-то уникальным ключом?
                                          Тогда ошибки не будет 100%
                                            +1
                                            Я смотрю у вас ник не для красного словца выбран…
                                            –2
                                            http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

                                            Don't mention it…
                                              0
                                              Статью не читай @ сразу отвечай.
                                              –7
                                              Очередная статья о том, что вместо того чтобы решать проблему, её можно проигнорировать. А давайте сформулируем задачу так: найти в произвольном тексте все email-адреса. По одной лишь собаке будете искать?
                                                +9
                                                Это совсем другая задача, и решать её следует по другому.
                                                0
                                                Проверять что введен символ собаки и что минимум есть еще 2 символа a@a

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

                                                Потом опять возвращаться в мобильное приложение?

                                                Тут от этой логики у меня сорвало клапаны… Проясните.
                                                  0
                                                  Ну хорошо сделанные сайты после активации автоматом в приложение перекидывают. А в почту пользователь обычно попадает из прилетевшего пуш-уведомления о новом письме.
                                                    0
                                                    По крайней мере у меня на андроиде этот процесс выглядит куда проще.
                                                    1. Зашел на сайт/в приложение, вбил все данные, зарегистрировался.
                                                    2. Приходит push-уведомление от GMail о приходе письма, тыркаю на него.
                                                    3. Открывается письмо, в нем кнопка или ссылка, тыркаю на нее.
                                                    4. Открывается браузер, в нем новая вкладка говорит «хозяин, готово». Тыркаю на кнопку «назад».
                                                    5. Грузится опять приложение GMail с тем самым письмом, тыркаю еще раз назад.
                                                    6. Открывается та самая вкладка в браузере или приложение. Иногда надо еще тыркнуть на «обновить».

                                                    Итого 5 или 6 тапов, весь процесс занимает не более 10 секунд и какого-то отторжения не вызывает.
                                                      0
                                                      мобильным приложением можно перехватывать определенные ссылки.
                                                      Определяем, что пользователь отправил на активацию с мобильного, формируем ссылку для мобильного, клиент ее тычет, андроид спрашивает, как ее открыть, браузером или приложением
                                                      +1
                                                      Кажется я уже читал нечто подобное… У меня в гугле первая статья по запросу «валидация email»: https://habrahabr.ru/post/175375/ Я года два назад оригинал той статьи заказчику скидывал, когда он приставал ко мне с валидацией.
                                                      0
                                                      Пользователь с гораздо большей вероятностью введёт неправильный и действительный адрес, чем недействительный.
                                                      Вероятно, это зависит от аудитории. По моей практике — точно наоборот. Неправильный и действительный адрес был едва ли один за несколько лет. А вот недействительные каждый день вводят.

                                                      Вот что стоит, имхо, проверять, так это опечатки самых распространенных доменов. У нас это самая популярная ошибка, примерно четверть от всех недействительных адресов.
                                                        0
                                                        Опечатка в домене в 99% сделает адрес неправильным, недоступным, но не недействительным. Недействительным его сделает только несоответствие стандарту.
                                                        +1

                                                        Можно проверять существование домена и mx записи на нем.
                                                        Небольшой процент ощибок этот метод поймает.

                                                          0

                                                          и очень сильно увеличит отклик формы и не совсем понятно зачем. Рядовой случай такой:


                                                          1. регистрация пускает в профиль (юзер с минимальными правами но уже у нас в безе)
                                                          2. отправка письма подтверждения
                                                          3. Активация аккаунта.

                                                          Зачем тут проверять MX? и что это конкретно даст? гарантию того что на домене есть почтовый сервер?
                                                          Ну допустим у нас человек опечатался и ввел mael.ru и что дальше? MX у этого домена есть.
                                                          Или забыл что нужно вводить gmail.com, а не google.com, и не google.ru, и даже не gmail.ru (такой MX тоже есть)


                                                          И адрес валидный, и MX есть, вот только почта указана неверно

                                                            0
                                                            Я вам больше скажу: есть немало народу с почтой на google.com
                                                              0

                                                              На всех приведенных мной примерах есть настоящие электронные почты настоящих людей.
                                                              В случае с google.* это сотрудники компании

                                                            0
                                                            А что если после @ указан IPv6-адрес?
                                                              0

                                                              И сломает кучу товарищей, которые до сих пор не добавили MX, но используют A. И такое MTA вполне допускают.

                                                                0
                                                                Далеко ходить не надо, сейчас без dmarc, dkim, spf, MX и r-dns (которая соотв. ответу мейлсервера) письма будут улетать в спам. Причем у гугла это еще более менее человечно, а у мелкософта — не глядя.
                                                                  0

                                                                  DMARC, благо, пока не является обязательным условием для жизни, как и DKIM. А настроить MX, rev DNS и SPF — дело недолгое.


                                                                  Гугл больше бесит отправкой легитимных писем из рассылок в spam, а иногда их отбрасыванием, чего очень не любят ezmlm и mailman. Меня из некоторых списков рассылки так выкидывало. И крайне неприятно, когда это какой-нибудь members@apache.org, а не просто какой-нибудь high traffic dev@.

                                                                    0
                                                                    А что трудного в том, чтобы настроить dmarc и dkim?
                                                                      0

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

                                                                        0
                                                                        Там в ключах прописан домен. Ничего не мешает скопировать такой ключ на «второй» сервер, который отправляет почту по тому же домену. Да и перегенерировать их не нужно.

                                                                        В идеале будет вот так:
                                                                        картинка
                                                                        image

                                                                        Только мне нам spamrats подпортили, так как это скрин с почты виртуалки и они тупо всю подсеть загнали. С другой стороны на них как бы и насрать, так как они никто, и я пока еще не видел, чтобы письма отсюда блочились. А лишний раз с ними переписываться — время тратить.
                                                              0
                                                              А ведь можно на основе «правильной» проверки отсеять кучу спамеров и особо одарённых. И это прекрасно для большинства сервисов. :P
                                                                0
                                                                Хороший перевод, спасибо. С автором статьи согласен.
                                                                Но мне показалось, что к первым двум пунктам:
                                                                1. Понимает ли пользователь, что от него требуется ввести адрес электронной почты в это поле?
                                                                2. Правильно ли он ввёл свой адрес в поле?
                                                                Обязательно нужно добавить 3 — А насколько Вашему сервису важно знать валидный адрес пользователя?
                                                                И мыслей здесь несколько:
                                                                1. Со времен появления сотовых телефонов значимость почты в разрезе возможности идентификации пользователя и обратной связи с ним резко упала.
                                                                2. Что важней, что пользователь получит возможность приносить Вам прибыль, пользуясь Вашим сервисом (например ввиде покупки товаров и т.п.) или обязательная доставка рекламы на его почтовый адрес?

                                                                Но справедливость ради скажу, что участвовал в проекте где были четкие бизнес требования на проверку введенного пользователем адреса (не массовый продукт) и связано это было с внутренним регламентом компании-закаpчика (ограничение по допустимым доменам и именам до собаки)
                                                                Так что всякое бывает.
                                                                  0

                                                                  Напомнило видео Андрея Листочкина, один из примеров был как раз про валидацию.

                                                                    0

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

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

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

                                                                        окей, адрес существует, просто чужой не rfedoseenko@mail а efedoseenko@mail, соседние буковки, банальная опечатка

                                                                        –2
                                                                        Т.е. валидация не нужна и пихаем в базу все что пользователь там ввел? Серьзно?
                                                                          +2
                                                                          Именно так, а если валидация через ссылку в мейле не прошла на протяжении TTL — то удаляем из базы.
                                                                            0

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

                                                                            0
                                                                            Согласитесь это классно:

                                                                            -какой у тебя мейл?
                                                                            -#!$%&’*+-/=?^_`{}|~@example.com
                                                                            -??
                                                                            -слеш затем...


                                                                            Какой смысл в таких ящиках, если нормальный человек (не sup3r}{ack3%-@example.com) будет использовать [-_.0-9a-z] слева от @?
                                                                              0
                                                                              Я тоже так считаю, что рядовой пользователь будет вводить символы a-z0-9, ну и край — и +. Все остальные извращенцы составят примерно 1% от основного состава. Задумайтесь, а нужны ли они вам?
                                                                              P.S. Это каким нужно быть извращенцем, чтобы каждый раз вводить свою почту в виде #!$%&’*+-/=?^_`{}|~@example.com?
                                                                                0
                                                                                Я вам скажу больше, у меня почта вида a@abc.ab (там 3 буквенный домен в 2 буквенной зоне), с которой стоит форванд на основной [a-z] ящик.
                                                                                Делал специально, чтобы люди (в том числе иностранцы) не имели проблем записать мой мейл из телефонного разговора… с другой стороны они меня каждый раз спрашивают (кто слышет в первый раз), не ошибся ли я в почте, мол она неправильная на их взгляд, так как люди привыкли к хотмейлам и гмейлам.
                                                                                  0
                                                                                  Я об этом и веду речь. Почти все привыкли слышать и читать ящики в буквенно-цифровом виде и плюс еще тире. Если выходишь за рамки общепринятых обозначений, то начинают переспрашивать и уточнять. Поэтому есть ли смысл пропускать такие исключения? Если это не сайт гиков программистов или сисадминов. ;) Вот реально можно ожидать всё, что угодно. Но вот какова вероятность встретить такие адреса?
                                                                                    +4
                                                                                    А какой смысл отсеивать таких пользователей? Не могу придумать никакой причины для этого кроме «хочу чтобы меня кто-нибудь ненавидел».
                                                                                      0
                                                                                      Зато достаточно по валидации определиться /^[a-zа-яё0-9_\-\.]{2,30}@[a-zа-яё0-9_\-\.]{1,40}$/iu
                                                                                      Может и не идеально, но почти все нормальные ящики сюда можно загнать.
                                                                                        +4
                                                                                        Ещё раз спрашиваю — ЗАЧЕМ? Вы делаете дополнительную проверку, исполняете дополнительный код, который кто-то дополнительно разработал — а из «полезных» результатов — только увеличение энтропии во вселенной и ненависть нескольких человек по отношению к вам. Вам шашечки или ехать?
                                                                                          0
                                                                                          Как минимум ящики надо проверять, а не ловить ошибки от мейлера.

                                                                                          А далее — уже личное дело каждого. Кто девушку ужинает, тот ее и танцует, только в плане сервера. Каждый админ это художник, он делает так видит… в лучшую или худшую стороны.

                                                                                          Да и RFC… если оставить [\w\.\-_] юзеров, то никто и не пострадает… в большей массе.
                                                                                          И RFC RFC рознь.
                                                                                          Скрытый текст
                                                                                          Я вот сейчас занят конфигуратором для NSD, меня от RFC по DNS просто тошнит, в итоге я просто взял исходник NSD и по ним делаю базу и конфигуратор. Если уж NSD не 100% соотв. RFC (например по длине полей), то и мой продукт будет так же не полностью соответствовать.
                                                                                            +1
                                                                                            Вы так и не ответили на главный вопрос — зачем? Зачем проверять ящики? Ну усложните вы кому-то с необычным ящиком жизнь, вам-то что от этого? Столько усилий только для того, чтобы кому-то нагадить? Ведь то, что ящик соответствует вашему шаблону — не гарантирует того, что мейлер не вывалит ошибку (потому что домена например не существует), и не грантирует того, что емейл введён верно (если например опечатались в имени). Это не даст ничего ни вам, ни вашему приложению. Ну, разве что если вы работник на ставке и вам нужно изобразить бурную деятельность, а то что результат бесполезен — не ваша проблема?
                                                                                              –2
                                                                                              Так можно и данные на SQL проверять, и сразу в базу!

                                                                                              На самом деле все просто — почта такая, как я писал выше, она серая и убогая. Талантливые и яркие }{aцkéрbI@ идут лесом искать другие сервисы (=делать другую почту), так как скрипты, которые вероятно что-то делают или как-то обрабатывают ящики (я ничего с мыльниками не делаю) могут сломаться, и значит из надо переписать, что ломает. Следом уязвимости (как в пхпмейлеров), хрен знает что еще найдут, но она не взлетит, если система просто проигнорит такую почту.

                                                                                              Дискуссию не о чем. Я, например, не люблю, когда в базе каша в адресах, значит у меня и все подконтрольные сервера не примут такие ящики. Дале хуже… у меня вообще пачка проверок на клиентов (которые ко мне лезут на коннект), в том числе и на reverse dns, и если что-то не нравится — reject.
                                                                                                +2

                                                                                                Спасибо, теперь мне всё ясно. Синдром вахтёра в терминальной стадии. Вопросов больше не имею.

                                                                                                  –1
                                                                                                  Скорее педанта-библиотекаря и воспитателя детсада.
                                                                                              0
                                                                                              Да и RFC… если оставить [\w.-_] юзеров, то никто и не пострадает…

                                                                                              Только ВасяПупкин+майор@мвд.рф xD

                                                                                            +1

                                                                                            И адрес nikitasius из примера выше не пройдёт, т. к. перед @ всего 1 символ.

                                                                                              –4
                                                                                              Если ящик один в один такого типа, то я еще таких не встречала. Поэтому пусть идет и регенет нормальный ящик.
                                                                                                0
                                                                                                Лол, разница между
                                                                                                • оставить числа, буквы и -._
                                                                                                • тоже самое + 2+ символа слева от @

                                                                                                Видна невооруженным глазом.
                                                                                      0

                                                                                      А ещё -, _ и . часто используются. Видел кучу рабочих адресов вида name.lastname@..., lastname.f@... и т. п.

                                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                                      0
                                                                                      Учитывая, что example.com купить нельзя, сомневаюсь
                                                                                        +1
                                                                                        У нее был (.)(.)~@example.com
                                                                                        0
                                                                                        А почему никто не валидирует e-mail через oauth-like механизм? И почему ещё gmail не предоставляет возможности web-подтверждения подписок на рассылки/указания e-mail при регистрации? Это же на 100% решает проблему распознавания спама для активационных e-mail.
                                                                                          +2
                                                                                          Google давно уже это сделал. Называется «регистрация через Google-аккаунт»
                                                                                          0
                                                                                          Что с кирилистическими адресами?
                                                                                            0
                                                                                            Вероятно как и с кириллическими доменами — все очень сложно…
                                                                                            0
                                                                                            Как проверить адрес на правильность?
                                                                                            — Никак.
                                                                                            — Высылайте проверочные письма!

                                                                                            З.Ы. Это если кому лень читать полет фантазии автора статьи…

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

                                                                                            Самое читаемое