Biblioteca simples para verificar a validade de um email. As verificações são realizadas na seguinte ordem:
# mix.exs
def deps do
[
# other dependencies...
{ :email_checker , "~> 0.2.4" }
# other dependencies...
]
end
# config/config.exs -- default
config :email_checker ,
default_dns: :system ,
also_dns: [ ] ,
validations: [ EmailChecker.Check.Format , EmailChecker.Check.MX ] ,
smtp_retries: 2 ,
timeout_milliseconds: :infinity
No ambiente de teste, precisamos carregar manualmente os registros DNS para validar se existe ou não um MX. Quando carregamos a biblioteca, Erlang ainda não possui sua lista de registros DNS. Portanto, para evitar qualquer problema, definimos um DNS padrão. Por padrão, o valor do ambiente de teste é: {8, 8, 8, 8}
, que é o servidor DNS público principal do Google. Se você achar que há falhas estranhas na resolução de nomes, talvez seja necessário especificar um servidor DNS padrão.
Caso precise carregar mais servidores DNS manualmente após o padrão, você pode definir uma lista de mais IPs de servidores DNS na configuração also_dns
.
Observe que o endereço IP é representado como uma tupla separada por vírgulas.
A configuração de validações padrão deve ser adequada para a maioria dos casos. Se você usar endereços de e-mail falsos, mas de aparência válida, em seus próprios testes, talvez seja necessário definir as validações apenas para [Format]
e os testes MX e SMTP não serão usados nessa configuração.
A estratégia de validação SMTP tentará 2 tentativas, por padrão.
As estratégias de validação MX e SMTP, cada uma à sua maneira, usam o mesmo tempo limite padrão para conexões de rede que as chamadas da biblioteca Erlang subjacente. É importante observar que esse valor é :infinity
e a chamada demorará o tempo que durar. Você provavelmente deseja definir um tempo limite razoável em milissegundos. Observe que:
# config/config.exs -- example personalized configuration
config :email_checker ,
default_dns: { 8 , 8 , 8 , 8 } ,
smtp_retries: 1 ,
timeout_milliseconds: 6000
EmailChecker . valid? ( "[email protected]" )
#=> true
EmailChecker . valid? ( "[email protected]" )
#=> false
REGISTRO DE ALTERAÇÕES
MIT