Prosta walidacja maila w C#

Żeby sprawdzić poprawność adresu email, wcale nie trzeba męczyć się ze skomplikowanymi wyrażeniami regularnymi. W C# walidacja maila jest prosta – z pomocą przychodzi klasa MailAddress. Oczywiście jest to rozwiązanie wysokopoziomowe i wolne (rzuca wyjątki). Zapewnia jednak czytelność kodu.

Przykład (zaczerpnięty ze StackOverflow):

bool IsValid(string emailaddress)
{
  try
  {
    MailAddress m = new MailAddress(emailaddress);
    Console.WriteLine("TRUE" + "\t" + emailaddress);
    return true;
  }
  catch
  {
    Console.WriteLine("FALSE" + "\t" + emailaddress);
    return false;
  }
}

Testy – walidacja maila:

IsValid("ok@ok.pl");
IsValid("dolores.ryba@poczta-n.pl");
IsValid("dolores.ryba@poczta.odlotowa.pl");
IsValid("dolores.ryba@a.b.c.d.pl");
IsValid("psikus@dot.dot.dot..pl");
IsValid("@");
IsValid("");
IsValid(null);
IsValid("bad@");
IsValid("@wolf");
IsValid("@poczta.pl");
IsValid("cokolwiek");

Wynik:

TRUE ok@ok.pl
TRUE dolores.ryba@poczta-n.pl
TRUE dolores.ryba@poczta.odlotowa.pl
TRUE dolores.ryba@a.b.c.d.pl
TRUE psikus@dot.dot.dot..pl //poprawny mail? Kwestia dyskusyjna
FALSE @
FALSE
FALSE
FALSE bad@
FALSE @wolf
FALSE @poczta.pl
FALSE cokolwiek

6 myśli nt. „Prosta walidacja maila w C#

  1. Pingback: dotnetomaniak.pl

    1. Paweł Łukasik

      Też mi się to wydawało złym sposobem ale stwierdziłem, że sprawdzę to na danych. Spróbowałem sprawdzić poprawność tych adresów przez 3 sposoby. try-catch, prosty regex i bardziej skomplikowany.

      Sam program jest tutaj: https://gist.github.com/pawlos/9643dd72926d902b6276052fd712a27f a wyniki tutaj: https://gist.github.com/pawlos/7bd7d52ac5d346dcf4d9609e14a5c38f

      Wniosek z tego, że jak jest dobrze, że walidacja jest szybka – problem pojawia się gdy faktycznie mail nie jest prawidłowy.

      Odpowiedz

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *