/email_guard

Elixir library for detecting disposable or non-business email addresses.

Primary LanguageElixirMIT LicenseMIT

EmailGuard hex.pm hexdocs.pm

Elixir library for detecting disposable (burner) or personal email addresses.

Comes with two lists:

  • DisposableList largely based on this list containing 3846 domains;
  • FreeList mostly based on this minus the domains already listed in DisposableList, total 5072 domains.

Installation

Add to your mix.exs:

def deps do
  [
    {:email_guard, "~> 1.0"}
  ]
end

If you're not using application inference, then add :email_guard to your applications list.

Usage

Checks if given email or domain is present in email lists:

iex> EmailGuard.check("svilen@gmail.com")
:ok

iex> EmailGuard.check("gmail.com")
:ok

By default it will check against EmailGuard.DisposableList:

iex> EmailGuard.check("svilen@mailinator.com")
{:error, "EmailGuard.DisposableList"}

You can specify the email list modules, e.g. including the provided one for free email service providers:

iex> lists = [EmailGuard.DisposableList, EmailGuard.FreeList]
[EmailGuard.DisposableList, EmailGuard.FreeList]

iex> EmailGuard.check("svilen@gmail.com", lists)
{:error, "EmailGuard.FreeList"}

To provide your own custom list see the EmailGuard.List behaviour.

Note that EmailGuard expects a valid email address or domain as input.

Benchmark

MIX_ENV=bench mix run bench/check_bench.exs

License

See LICENSE file.