-
Notifications
You must be signed in to change notification settings - Fork 342
/
adapter.ex
38 lines (30 loc) · 1.11 KB
/
adapter.ex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
defmodule Bamboo.Adapter do
@moduledoc ~S"""
Behaviour for creating Bamboo adapters
All recipients in the Bamboo.Email struct will be normalized to a 2 item tuple
of {name, address} when deliver through your mailer. For example,
`email.from |> elem(0)` would return the name and `email.from |> elem(1)`
would return the email address.
For more in-depth examples check out the
[adapters in Bamboo](https://github.com/paulcsmith/bamboo/tree/master/lib/bamboo/adapters).
## Example
defmodule Bamboo.CustomAdapter do
@behaviour Bamboo.Adapter
def deliver(email, config) do
deliver_the_email_somehow(email)
end
def handle_config(config) do
# Return the config if nothing special is required
config
# Or you could require certain config options
if Map.get(config, :smtp_username) do
config
else
raise "smtp_username is required in config, got #{inspect config}"
end
end
end
"""
@callback deliver(%Bamboo.Email{}, %{}) :: any
@callback handle_config(map) :: map
end