defmodule Auth.Email do
@doc """
`sendemail/1` sends an email using AWS SES.
see: https://github.com/dwyl/email#sending-email
params is a map that *must* contain the keys: email, name and template.
## Examples
iex> sendemail(%{"email" => "te@st.co", "name" => "Al", "template" => "hi"})
%{
"aud" => "Joken",
"email" => "te@st.co",
"exp" => 1616864371,
"iat" => 1585327371,
"id" => 33,
"iss" => "Joken",
"jti" => "2o03dm2ktf6f1j74es0001e3",
"name" => "Al",
"nbf" => 1585327371,
"status" => "Pending",
"template" => "hi"
}
"""
def sendemail(params) do
url = System.get_env("EMAIL_APP_URL") <> "/api/send"
# until further notice use the SECRET_KEY_BASE for sending email:
secret = System.get_env("SECRET_KEY_BASE")
jwt = AuthPlug.Token.generate_jwt!(params, secret)
headers = [Authorization: "#{jwt}"]
options = [
ssl: [{:versions, [:"tlsv1.2"]}],
# github.com/dwyl/auth/issues/48
timeout: 50_000,
recv_timeout: 50_000
]
{:ok, response} = HTTPoison.post(url, "_nobody", headers, options)
Jason.decode!(response.body)
end
end