Packages
pow
1.0.16
1.0.39
1.0.38
1.0.37
1.0.36
1.0.35
1.0.34
1.0.33
1.0.32
1.0.31
1.0.30
1.0.29
1.0.28
1.0.27
1.0.26
1.0.25
1.0.24
1.0.23
1.0.22
1.0.21
1.0.20
1.0.19
1.0.18
1.0.17
1.0.16
1.0.15
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.1.0-rc.1
0.1.0-alpha.8
0.1.0-alpha.7
retired
0.1.0-alpha.6
0.1.0-alpha.5
0.1.0-alpha.4
0.1.0-alpha.3
0.1.0-alpha.2
0.1.0-alpha.1
0.1.0-alpha
Robust user authentication solution
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
lib/pow/phoenix/mailer.ex
defmodule Pow.Phoenix.Mailer do
@moduledoc """
This module provides an API for mails to be sent by Pow.
Pow mails is build with `Pow.Phoenix.Mailer.Mail` structs, and consists of
`:subject`, `:text`, `:html` and `:user` keys.
## Usage
defmodule MyAppWeb.Pow.Mailer do
use Pow.Phoenix.Mailer
require Logger
@impl true
def cast(%{user: user, subject: subject, text: text, html: html, assigns: _assigns}) do
# Build email struct to be used in `process/1`
%{to: user.email, subject: subject, text: text, html: html}
end
@impl true
def process(email) do
# Send email
Logger.debug("E-mail sent: \#{inspect email}")
end
end
Remember to update configuration with `mailer_backend: MyAppWeb.Pow.Mailer`
"""
alias Plug.Conn
alias Pow.{Config, Phoenix.Mailer.Mail, Plug}
@callback cast(Mail.t()) :: any()
@callback process(any()) :: any()
@doc false
defmacro __using__(_opts) do
quote do
@behaviour unquote(__MODULE__)
end
end
@spec deliver(Conn.t(), Mail.t()) :: any()
def deliver(conn, email) do
config = Plug.fetch_config(conn)
mailer = Config.get(config, :mailer_backend) || raise_no_mailer_backend_set()
email
|> mailer.cast()
|> mailer.process()
end
@spec raise_no_mailer_backend_set :: no_return
defp raise_no_mailer_backend_set do
Config.raise_error("No :mailer_backend configuration option found for plug.")
end
end