Мне интересно, как далеко люди должны пройти проверку адреса электронной почты. Моя область - это, прежде всего, веб-разработка, но это применимо везде.
Я видел несколько подходов:
- просто проверить, есть ли «@», что очень просто, но, конечно, не так надежно.
- более сложный тест регулярных выражений для стандартных форматов электронной почты
- полное регулярное выражение против RFC 2822 - проблема с этим состоит в том , что часто электронной почты может быть действительным , но это, вероятно , не то , что имел в виду пользователь
- Проверка DNS
- Проверка SMTP
Как многие люди могут знать (но многие не знают), адреса электронной почты могут иметь много странных изменений, которые большинство людей обычно не учитывают (см. RFC 2822 3.4.1 ), но вы должны подумать о целях Ваша проверка: вы просто пытаетесь убедиться, что электронное сообщение может быть отправлено на адрес, или это то, что пользователь, вероятно, хотел ввести (что маловероятно во многих более неясных случаях «действительного») адреса).
Вариант, который я рассмотрел, - просто выдавать предупреждение с более эзотерическим адресом, но при этом разрешать выполнение запроса, но это усложняет форму, и большинство пользователей могут запутаться.
В то время как проверка DNS / проверка SMTP кажутся простыми, я предвижу проблемы, когда DNS-сервер / SMTP-сервер временно недоступен, и пользователь не может где-то зарегистрироваться или SMTP-сервер пользователя не поддерживает требуемые функции.
Как некоторые опытные разработчики могут справиться с этим? Есть ли другие подходы, кроме тех, которые я перечислил?
Изменить: я полностью забыл самое очевидное из всех, отправив подтверждение по электронной почте! Спасибо ответчикам за то, что указал на это. Да, этот довольно надежный, но требует дополнительных хлопот со стороны всех участников. Пользователь должен получить какое-то электронное письмо, а разработчику необходимо запомнить пользовательские данные, прежде чем они будут подтверждены как действительные.