Skip to content

Instantly share code, notes, and snippets.

@MrTin
Forked from mgamini/Elixir Email Validation
Created March 13, 2016 00:44
Show Gist options
  • Select an option

  • Save MrTin/7f0bc0c55eaacf37fce2 to your computer and use it in GitHub Desktop.

Select an option

Save MrTin/7f0bc0c55eaacf37fce2 to your computer and use it in GitHub Desktop.

Revisions

  1. @mgamini mgamini created this gist Aug 16, 2014.
    29 changes: 29 additions & 0 deletions Elixir Email Validation
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,29 @@
    defmodule EmailValidator do

    # ensure that the email looks valid
    def validate_email(email) when is_binary(email) do
    case Regex.run(~r/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/, email) do
    nil ->
    {:error, "Invalid email"}
    [email] ->
    try do
    Regex.run(~r/(\w+)@([\w.]+)/, email) |> validate_email
    rescue
    _ -> {:error, "Invalid email"}
    end
    end
    end

    # check the email against a list of accepted domains, then make check if it is unique
    def validate_email([email, username, host]) do
    case host in Config.accepted_domains do
    true ->
    case find_by_email(email) do
    nil -> :ok
    _account -> :account
    end
    _ ->
    {:error, "Not an accepted domain."}
    end
    end
    end