Packages
pow
1.0.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/mail.ex
defmodule Pow.Phoenix.Mailer.Mail do
@moduledoc """
Module that renders html and text version of e-mails.
"""
alias Plug.Conn
alias Pow.{Config, Plug}
@type t :: %__MODULE__{}
defstruct [:user, :subject, :text, :html, :assigns]
@doc """
Returns a populated `%Pow.Phoenix.Mailer.Mail{}` map.
If the configuration has `:web_mailer_module`, it will be used to find the
template view module to call.
"""
@spec new(Conn.t(), map(), {module(), atom()}, Keyword.t()) :: t()
def new(conn, user, {view_module, template}, assigns) do
config = Plug.fetch_config(conn)
web_module = Config.get(config, :web_mailer_module)
view_assigns = Keyword.merge([conn: conn, user: user], assigns)
view_module = Pow.Phoenix.ViewHelpers.build_view_module(view_module, web_module)
subject = view_module.subject(template, view_assigns)
text = view_module.render("#{template}.text", view_assigns)
html =
"#{template}.html"
|> view_module.render(view_assigns)
|> Phoenix.Template.HTML.encode_to_iodata!()
|> IO.iodata_to_binary()
struct(__MODULE__, user: user, subject: subject, text: text, html: html, assigns: assigns)
end
end