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"}
]
endIf 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")
:okBy 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.exsSee LICENSE file.