Bibliothèque simple vérifiant la validité d'un email. Les contrôles sont effectués dans l'ordre suivant :
# 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
Dans l'environnement de test, nous devons charger manuellement les enregistrements DNS pour valider si un MX existe ou non. Lorsque nous chargeons la bibliothèque, Erlang n'a pas encore sa liste d'enregistrements DNS. Alors pour éviter tout problème, nous définissons un DNS par défaut. Par défaut, la valeur de l'environnement de test est : {8, 8, 8, 8}
, qui est le principal serveur DNS public de Google. Si vous constatez des échecs étranges dans la résolution de noms, vous devrez peut-être spécifier un serveur DNS par défaut.
Dans le cas où vous devez charger manuellement plus de serveurs DNS après celui par défaut, vous pouvez définir une liste de plusieurs adresses IP de serveurs DNS dans le paramètre also_dns
.
Veuillez noter que l'adresse IP est représentée sous la forme d'un tuple séparé par des virgules.
Le paramètre de validation par défaut devrait convenir à la plupart des cas. Si vous utilisez des adresses e-mail fausses mais d'apparence valide dans vos propres tests, vous devrez peut-être définir les validations uniquement sur [Format]
, et les tests MX et SMTP ne seront alors pas utilisés dans cette configuration.
La stratégie de validation SMTP tentera 2 tentatives, par défaut.
Les stratégies de validation MX et SMTP, chacune à leur manière, utilisent le même délai d'attente par défaut pour les connexions réseau que les appels de la bibliothèque Erlang sous-jacente. Il est important de noter que cette valeur est :infinity
et que l'appel prendra aussi longtemps que l'appel. Vous souhaiterez probablement définir un délai d'attente raisonnable en millisecondes. Veuillez noter 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
JOURNAL DES CHANGEMENTS
MIT