Простая библиотека, проверяющая валидность электронного письма. Проверки выполняются в следующем порядке:
# 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
В тестовой среде нам нужно вручную загрузить записи DNS, чтобы проверить, существует ли MX или нет. Когда мы загружаем библиотеку, у Erlang еще нет списка записей DNS. Поэтому, чтобы избежать каких-либо проблем, мы определяем DNS по умолчанию. По умолчанию значение тестовой среды: {8, 8, 8, 8}
, которое является основным общедоступным DNS-сервером Google. Если вы обнаружите странные сбои в разрешении имен, возможно, вам придется указать DNS-сервер по умолчанию.
В случае, если вам нужно вручную загрузить больше DNS-серверов после сервера по умолчанию, вы можете установить список дополнительных IP-адресов DNS-серверов в настройке also_dns
.
Обратите внимание, что IP-адрес представлен в виде кортежа, разделенного запятыми.
Настройка проверки по умолчанию должна подходить для большинства случаев. Если вы используете поддельные, но действительные адреса электронной почты в своих собственных тестах, вам может потребоваться установить для проверки только значение [Format]
, и тогда тестирование MX и SMTP не будет использоваться в этой конфигурации.
Стратегия проверки SMTP по умолчанию предпримет две повторные попытки.
Стратегии проверки MX и SMTP, каждая по-своему, используют тот же тайм-аут по умолчанию для сетевых подключений, что и базовые вызовы библиотеки Erlang. Важно отметить, что это значение — :infinity
, и вызов будет длиться столько же времени, сколько занимает сам вызов. Вероятно, вы захотите установить разумный тайм-аут в миллисекундах. Обратите внимание:
# 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
ИЗМЕНЕНИЯ
Массачусетский технологический институт