Skip to content
Elixir library for detecting disposable or non-business email addresses.
Elixir
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bench
lib
priv
test
.formatter.exs
.gitignore
CHANGELOG.md
LICENSE
README.md
mix.exs
mix.lock

README.md

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

About

Heresy logo

This project is sponsored by Heresy. We're always looking for great engineers to join our team, so if you love Elixir, open source and enjoy some challenge, drop us a line and say hello!

License

  • EmailGuard: See LICENSE file.
  • "Heresy" name and logo: Copyright © 2019 Heresy Software Ltd
You can’t perform that action at this time.