# EctoEmail
[](https://github.com/synchronal/ecto_date_time_range/actions)
[](https://hex.pm/packages/ecto_date_time_range)
An `Ecto.Type` for email addresses, using the
[`ex_email`](https://github.com/synchronal/ex_email) library for
validations. When using a database column type interchangeable with
`:string` such as `:text`, `:string`, or `:citext`, this type may be
used in the schema module to provide automatic validation of inputs.
- Repo: <https://github.com/synchronal/ecto_email>
- Hex docs: <https://hexdocs.pm/ecto_email>
Our open source `Ecto.Type` libraries:
- [ecto_date_time_range](https://github.com/synchronal/ecto_date_time_range)
- [ecto_email](https://github.com/synchronal/ecto_email)
- [ecto_phone](https://github.com/synchronal/ecto_phone)
This library is tested against the most recent 3 versions of Elixir and
Erlang.
## Sponsorship 💕
This library is part of the [Synchronal suite of libraries and
tools](https://github.com/synchronal) which includes more than 15 open
source Elixir libraries as well as some Rust libraries and tools.
You can support our open source work by [sponsoring
us](https://github.com/sponsors/reflective-dev). If you have specific
features in mind, bugs you'd like fixed, or new libraries you'd like to
see, file an issue or contact us at
[<contact@reflective.dev>](mailto:contact@reflective.dev).
## Installation
``` elixir
def deps do
[
{:ecto_email, "~> 1.0"}
]
end
```
``` elixir
defmodule Schema.Person do
use Ecto.Schema
import Ecto.Changeset
schema "people" do
field :email_address, EctoEmail
end
def changeset(data \\ %__MODULE__{}, attrs) do
data
|> cast(Map.new(attrs), ~w[email_address]a)
end
end
```
See the [documentation](https://hexdocs.pm/ecto_email) for more info.
## Development
This project uses [medic](https://github.com/synchronal/medic-rs) for
its development workflow.
``` shell
brew bundle
bin/dev/doctor
bin/dev/test
bin/dev/audit
bin/dev/update
bin/dev/shipit
```
Please take a look at `.config/medic.toml` for the checks that must pass
in order for changes to be accepted.