Elixir library for detecting disposable (burner) or personal email addresses.
Focused on performance and features the largest database of domains availble.
Comes with two lists out of the box:
DisposableList
- based on mailchecker's list, total 33,606 domains;FreeList
- based on this list excl. already listed inDisposableList
, total 5009 domains.
You can also plug your own dataset by implementing the EmailGuard.List
behaviour ✌️
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.
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.
MIX_ENV=bench mix run bench/check_bench.exs
See LICENSE file.