README.md

# Disposable

[![Hex.pm](https://img.shields.io/hexpm/v/disposable.svg)](https://hex.pm/packages/disposable)
[![Hex Docs](https://img.shields.io/badge/hex-docs-brightgreen.svg)](https://hexdocs.pm/disposable)

Disposable is an Elixir library for checking if an email address is from a disposable email service. It provides a fast, memory-efficient way to validate email domains against a known list of disposable email providers.

## Features

- Fast in-memory checking of email domains
- Easy to use API
- Configurable disposable domains list
- Ability to reload domains without application restart

## Installation

The package can be installed by adding `disposable` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:disposable, "~> 0.1.0"}
  ]
end
```

## Usage

### Basic usage

```elixir
iex> Disposable.check("user@gmail.com")
false

iex> Disposable.check("user@tempmail.com")
true
```

### Configuration

By default, Disposable uses a built-in list of disposable email domains. You can provide your own list by setting the `:disposable_domains_file` configuration in your `config.exs`:

```elixir
config :disposable, disposable_domains_file: "/path/to/your/domains.txt"
```

### Reloading domains

If you update your domains list, you can reload it without restarting your application:

```elixir
Disposable.reload()
```

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request

## License

This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details.

## Acknowledgments

- Thanks to all contributors who have helped with this project.
- Special thanks to the maintainers of various disposable email domain lists that helped in creating our initial list.