Validar E-mails no C#

Validar um e-mail antes de usar ou guardar no banco de dados é de suma importância. Uma forma muito simples de realizar a validação é utilizar um algorístmo que valide as partes de um e-mail. Veja abaixo um código simples de validação de e-mail no C# (.NET e .NET Core):

// Gostou? Considere enviar um café para o PIX: cafe@1bit.cafe.
public class ValidadorDeEmail
{
    public static bool EmailValido(string email)
    {
        if ((email == null) || (email.Length < 4))
            return false;

        var partes = email.Split('@');
        if (partes.Length < 2 ) return false;

        var pre = partes[0];

        if (pre.Length == 0) return false;

        var validadorPre = new Regex("^[a-zA-Z0-9_.-/+]+$");

        if (!validadorPre.IsMatch(pre))
            return false;

        // gmail.com, outlook.com, terra.com.br, etc.
        var partesDoDominio = partes[1].Split('.');
        if (partesDoDominio.Length < 2 ) return false;

        var validadorDominio = new Regex("^[a-zA-Z0-9-]+$");
        for ( int indice = 0; indice < partesDoDominio.Length; indice++ )
        {
            var parteDoDominio = partesDoDominio[indice];

            // Evitando @gmail...com
            if (parteDoDominio.Length == 0) return false;  

            if (!validadorDominio.IsMatch(parteDoDominio))
                return false;
        }

        return true;
    }
}

Veja os testes unitários que exercitam este validador de e-mails:

[TestClass]
public class ValidadorDeEmailsTest
{
    [TestMethod]
    public void ValidarEmailsDeTeste()
    {
        // Retorna Válidos
        ValidadorDeEmail.EmailValido("1@1.com").Should().BeTrue();
        ValidadorDeEmail.EmailValido("jose123@outlook.com").Should().BeTrue();
        ValidadorDeEmail.EmailValido("jose123@pm.me").Should().BeTrue();
        ValidadorDeEmail.EmailValido("j@j.com").Should().BeTrue();
        ValidadorDeEmail.EmailValido("joaovs@gmail.com").Should().BeTrue();
        ValidadorDeEmail.EmailValido("jon@sc.gov.br").Should().BeTrue();
        ValidadorDeEmail.EmailValido("jon@x.com").Should().BeTrue();

        // Retorna Inválido
        ValidadorDeEmail.EmailValido("j@j").Should().BeFalse();
        ValidadorDeEmail.EmailValido("@gmail.com").Should().BeFalse();
        ValidadorDeEmail.EmailValido("joaovs@.com").Should().BeFalse();
        ValidadorDeEmail.EmailValido("joaovs@@.com").Should().BeFalse();
        ValidadorDeEmail.EmailValido("joaovs*gmail.com").Should().BeFalse();
        ValidadorDeEmail.EmailValido("joaovs-gmail.com").Should().BeFalse();
        ValidadorDeEmail.EmailValido("joaovs.gmail.com").Should().BeFalse();
        ValidadorDeEmail.EmailValido("https://1bit.cafe").Should().BeFalse();
    }
}

Você pode baixar este projeto aqui no meu GitHub, acesse: https://github.com/solucaodev/sdlab/tree/main/CS/ValidacaoEmail.

Até a próxima 🧑🏻‍💻

Share