Packages
guard
0.12.9
0.19.1
0.19.0
0.18.0
0.17.2
0.17.1
0.17.0
0.16.3
0.16.2
0.16.1
0.16.0
0.15.3
0.15.2
0.15.1
0.15.0
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
0.13.0
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.8.0
0.7.1
0.7.0
0.6.1
0.6.0
0.5.0
0.4.1
0.4.0
0.3.0
0.2.0
0.1.0
Useful package for dealing with user authentication and signup
Current section
Files
Jump to
Current section
Files
lib/guard/mailer.ex
defmodule Guard.Mailer do
require Logger
use Bamboo.Mailer, otp_app: :guard
import Bamboo.Email
def create_mail(type, to, locale, user, meta \\ %{}) do
mail_conf = email_setup()
if mail_conf != nil do
module = Map.get(email_setup()[:templates], type)
new_email(
to: to,
from: email_setup()[:default_sender],
subject: apply(module, :subject, [locale, user, meta]),
html_body: apply(module, :html_body, [locale, user, meta]),
text_body: apply(module, :text_body, [locale, user, meta])
)
else
{:error, :no_configuration}
end
end
def send_plain_mail(from, to, subject, body) do
new_email(
to: to,
from: from,
subject: subject,
text_body: body
)
|> deliver_now()
end
def send_unverified_user_mail(user, type, meta \\ %{}) do
Logger.debug(fn -> "Sending #{type} mail to #{user.requested_email}" end)
type
|> create_mail(user.requested_email, user.locale, user, meta)
|> deliver_now
end
def send_user_mail(user, type, meta \\ %{}) do
email = user_email(user)
Logger.debug(fn -> "Sending #{type} mail to #{email}" end)
type
|> create_mail(email, user.locale, user, meta)
|> deliver_now
end
def send_welcome_email(user, token, pin) do
if user.requested_email != nil do
Logger.debug(fn -> "Sending welcome mail to #{user.requested_email}" end)
create_mail(:welcome, user.requested_email, user.locale, user, %{token: token, pin: pin})
|> deliver_now
end
end
def send_confirm_email(user, token) do
Logger.debug(fn -> "Sending confirmation mail to #{user.requested_email}" end)
create_mail(:confirm, user.requested_email, user.locale, user, %{token: token})
|> deliver_now
end
def send_reset_password_link(user, token, pin) do
email = user_email(user)
Logger.debug(fn -> "Sending reset mail to #{email}" end)
create_mail(:reset, email, user.locale, user, %{token: token, pin: pin})
|> deliver_now
end
def send_login_link(user, token, pin) do
email = user_email(user)
Logger.debug(fn -> "Sending login mail to #{email}" end)
create_mail(:login, email, user.locale, user, %{token: token, pin: pin})
|> deliver_now
end
def user_email(user) do
user.email || user.requested_email
end
defp email_setup do
Application.get_env(:guard, Guard.Mailer)
end
end