# `DripDrop.Recipients`
[🔗](https://github.com/agoodway/dripdrop/blob/v0.1.0/lib/dripdrop/recipients.ex#L1)

Normalizes channel recipient identifiers for matching and policy checks.

Phone numbers use `ExPhoneNumber`/libphonenumber when the input can be parsed
for the configured default region, falling back to conservative digit cleanup
for incomplete fixture or provider-supplied values. Email addresses are trimmed
and downcased for operational suppression matching.

# `normalize`

```elixir
@spec normalize(atom() | binary(), binary(), keyword()) :: binary()
```

Normalizes a recipient value for a DripDrop channel.

# `normalize_phone`

```elixir
@spec normalize_phone(binary(), binary()) :: {:ok, binary()} | {:error, term()}
```

Parses and formats a phone number as E.164.

# `valid_email?`

```elixir
@spec valid_email?(binary()) :: boolean()
```

Returns true when an email address passes ExEmail syntax validation.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
