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 🧑🏻💻