Gostaria de saber até que ponto as pessoas devem levar a validação do endereço de email. Meu campo é principalmente de desenvolvimento web, mas isso se aplica a qualquer lugar.
Eu já vi algumas abordagens:
- basta verificar se existe um presente "@", que é simples, mas é claro que não é tão confiável.
- um teste regex mais complexo para formatos de email padrão
- um regex completo contra a RFC 2822 - o problema é que geralmente um endereço de email pode ser válido, mas provavelmente não é o que o usuário quis dizer
- Validação de DNS
- Validação SMTP
Como muitas pessoas sabem (mas muitas não sabem), os endereços de email podem ter muitas variações estranhas que a maioria das pessoas geralmente não considera (consulte a RFC 2822 3.4.1 ), mas é preciso pensar nos objetivos de sua validação: você está simplesmente tentando garantir que uma mensagem de e-mail possa ser enviada para um endereço ou que é isso que o usuário provavelmente deseja inserir (o que é improvável em muitos dos casos mais obscuros de outras formas 'válidas 'endereços).
Uma opção que considerei é simplesmente dar um aviso com um endereço mais esotérico, mas ainda permitir a solicitação, mas isso adiciona mais complexidade a um formulário e a maioria dos usuários provavelmente fica confusa.
Embora a validação de DNS / validação de SMTP pareça óbvia, prevejo problemas em que o servidor DNS / servidor SMTP está temporariamente inativo e um usuário não consegue se registrar em algum lugar ou o servidor SMTP do usuário não suporta os recursos necessários.
Como alguns desenvolvedores experientes aqui podem lidar com isso? Existem outras abordagens além das listadas?
Edit: Eu esqueci completamente o mais óbvio de todos, enviando um e-mail de confirmação! Agradecemos aos respondentes por apontarem essa questão. Sim, este é bastante infalível, mas requer aborrecimentos extras por parte de todos os envolvidos. O usuário precisa buscar alguns emails e o desenvolvedor precisa se lembrar dos dados do usuário antes que eles sejam confirmados como válidos.