Packages
pow
0.1.0-alpha.4
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
use Swoosh.Mailer, otp_app: :my_app_web
import Swoosh.Email
def cast(email) do
%Swoosh.Email{}
|> from({"My App", "myapp@example.com"})
|> to({"", email.user.email})
|> subject(email.subject)
|> text_body(email.text)
|> html_body(email.html)
end
def process(email), do: deliver(email)
end
Remember to update configuration with `mailer_backend: MyAppWeb.Pow.Mailer`
"""
alias Plug.Conn
alias Pow.Phoenix.Mailer.Mail
@callback cast(Mail.t()) :: any()
@callback process(any()) :: any()
defmacro __using__(_opts) do
quote do
@behaviour unquote(__MODULE__)
end
end
@spec deliver(Conn.t(), Mail.t()) :: any()
def deliver(conn, email) do
config = Pow.Plug.fetch_config(conn)
mailer = Pow.Config.get(config, :mailer_backend, nil) || 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
Pow.Config.raise_error("No :mailer_backend configuration option found for plug.")
end
end