Zastanawiam się, jak daleko ludzie powinni przeprowadzić weryfikację adresu e-mail. Moja dziedzina to przede wszystkim tworzenie stron internetowych, ale dotyczy to wszędzie.
Widziałem kilka podejść:
- po prostu sprawdzając, czy jest obecny znak „@”, który jest bardzo prosty, ale oczywiście nie tak niezawodny.
- bardziej złożony test wyrażenia regularnego dla standardowych formatów e-mail
- pełny regex przed RFC 2822 - problem polega na tym, że często adres e-mail może być ważne, ale to nie jest chyba to, co użytkownik rozumie
- Sprawdzanie poprawności DNS
- Sprawdzanie poprawności SMTP
Jak wiele osób może wiedzieć (ale wielu nie wie), adresy e-mail mogą mieć wiele dziwnych odmian, których większość ludzi zwykle nie bierze pod uwagę (patrz RFC 2822 3.4.1 ), ale musisz pomyśleć o celach twoja walidacja: czy po prostu starasz się upewnić, że wiadomość e-mail może zostać wysłana na adres, czy też jest to, co użytkownik prawdopodobnie zamierzał podać (co jest mało prawdopodobne w wielu bardziej niejasnych przypadkach, w przeciwnym razie „ważnych” „adresy).
Rozważaną przeze mnie opcją jest po prostu ostrzeżenie o bardziej ezoterycznym adresie, ale nadal zezwalanie na przesłanie żądania, ale to jeszcze bardziej komplikuje formularz i większość użytkowników może się mylić.
Podczas gdy sprawdzanie poprawności DNS / sprawdzanie SMTP wydaje się bezproblemowe, przewiduję problemy, w których serwer DNS / serwer SMTP jest tymczasowo wyłączony, a użytkownik nie jest w stanie się gdzieś zarejestrować lub serwer SMTP użytkownika nie obsługuje wymaganych funkcji.
Jak niektórzy doświadczeni programiści mogą sobie z tym poradzić? Czy są jakieś inne podejścia niż te, które wymieniłem?
Edycja: Całkowicie zapomniałem najbardziej oczywistego ze wszystkich, wysyłając e-mail z potwierdzeniem! Dziękuję autorom odpowiedzi za wskazanie tego. Tak, ten jest dość niezawodny, ale wymaga dodatkowego wysiłku ze strony wszystkich zaangażowanych. Użytkownik musi pobrać wiadomość e-mail, a programista musi zapamiętać dane użytkownika, zanim nawet zostaną potwierdzone jako prawidłowe.