Biblioteca sencilla que comprueba la validez de un correo electrónico. Las comprobaciones se realizan en el siguiente orden:
# 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
En el entorno de prueba, necesitamos cargar manualmente los registros DNS para validar si existe un MX o no. Cuando cargamos la biblioteca, Erlang aún no tiene su lista de registros DNS. Entonces, para evitar cualquier problema, definimos un DNS predeterminado. De forma predeterminada, el valor para el entorno de prueba es: {8, 8, 8, 8}
, que es el servidor DNS público principal de Google. Si descubre que tiene fallas extrañas en la resolución de nombres, es posible que deba especificar un servidor DNS predeterminado.
En el caso de que necesite cargar más servidores DNS manualmente después del predeterminado, puede configurar una lista de más IP de servidores DNS en la configuración also_dns
.
Tenga en cuenta que la dirección IP se representa como una tupla separada por comas.
La configuración de validaciones predeterminada debería ser adecuada para la mayoría de los casos. Si utiliza direcciones de correo electrónico falsas pero que parecen válidas en sus propias pruebas, es posible que deba configurar las validaciones solo en [Format]
y las pruebas MX y SMTP no se utilizarán en esa configuración.
La estrategia de validación SMTP intentará 2 reintentos, de forma predeterminada.
Las estrategias de validación MX y SMTP, cada una a su manera, utilizan el mismo tiempo de espera predeterminado para las conexiones de red que las llamadas a la biblioteca Erlang subyacente. Es importante tener en cuenta que este valor es :infinity
y la llamada tardará tanto tiempo como dure la llamada. Probablemente desee establecer un tiempo de espera razonable en milisegundos. Tenga en cuenta 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 CAMBIOS
MIT