Sempre que precisamos validar endereços de e-mail em formulários de cadastro, temos a preocupação com o formato. Geralmente verificamos apenas se o endereço possui uma arroba, um ponto, e caso o endereço passe por este teste, consideramos correto.
Porém nem sempre este teste primitivo é suficiente. Seria ótimo poder verificar, por exemplo, se o domínio que foi digitado é válido, ou se o usuário (o que vem antes da arroba) está corretamente formatado.
Para resolver este problema, criei uma função simples, que verifica se o e-mail está corretamente formatado, e se estiver, verifica se o domínio é válido e se ele possui um registro MX em seus dados de DNS (próprio para o recebimento de e-mails).
Eis o código:
function VerificarEmailValido($email) { if (filter_var($email, FILTER_VALIDATE_EMAIL)) { list($alias, $domain) = explode("@", $email); if (checkdnsrr($domain, "MX")) { return true; } else { return false; } } else { return false; } }
A função retorna true
se o e-mail for válido, ou false
se for inválido.