# EmailGuard [![](]( [![](](

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.0"}

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("")

iex> EmailGuard.check("")

By default it will check against `EmailGuard.DisposableList`:

iex> EmailGuard.check("")
{: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("", 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

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 © 2018 Heresy Software Ltd