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.