updated for elixir 1.3
This commit is contained in:
parent
ee242ca92a
commit
98613e1a6f
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,4 @@
|
|||||||
|
.DS_Store
|
||||||
/_build
|
/_build
|
||||||
/cover
|
/cover
|
||||||
/deps
|
/deps
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
defmodule Mailex.Address do
|
defmodule Mailex.Address do
|
||||||
defstruct name: nil, address: nil
|
defstruct name: nil, address: nil
|
||||||
|
|
||||||
|
|
||||||
def rfc_822_format(emails) when is_list(emails), do:
|
def rfc_822_format(emails) when is_list(emails), do:
|
||||||
emails |> Enum.map(&rfc_822_format(&1))
|
Enum.map(emails, &rfc_822_format(&1))
|
||||||
|
|
||||||
|
|
||||||
def rfc_822_format(email) when is_map(email) do
|
def rfc_822_format(email) when is_map(email) do
|
||||||
email_address = Map.get(email, "address", Map.get(email, :address))
|
email_address = Map.get(email, "address", Map.get(email, :address))
|
||||||
@ -14,17 +12,21 @@ defmodule Mailex.Address do
|
|||||||
"#{email_name} <#{email_address}>"
|
"#{email_name} <#{email_address}>"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def envelope_format(emails) when is_list(emails), do:
|
||||||
|
Enum.map(emails, &envelope_format(&1))
|
||||||
|
|
||||||
|
def envelope_format(email) when is_map(email), do:
|
||||||
|
"<#{Map.get(email, "address", Map.get(email, :address))}>"
|
||||||
|
|
||||||
defp prepare_name(email_name, address) do
|
defp prepare_name(email_name, address) do
|
||||||
if email_name do
|
email_name = case email_name do
|
||||||
email_name = String.strip(email_name)
|
nil -> address
|
||||||
else
|
|> String.split("@")
|
||||||
email_name = address |>
|
|> List.first
|
||||||
String.split("@") |>
|
|> String.split(~r/([^\w\s]|_)/)
|
||||||
List.first |>
|
|> Enum.map(&String.capitalize/1)
|
||||||
String.split(~r/([^\w\s]|_)/) |>
|
|> Enum.join(" ")
|
||||||
Enum.map(&String.capitalize/1) |>
|
_ -> String.strip(email_name)
|
||||||
Enum.join(" ")
|
|
||||||
end
|
end
|
||||||
if String.match?(email_name, ~r/[\(\)\<\>\@\,\;\:\"\.\[\]\\]/) do
|
if String.match?(email_name, ~r/[\(\)\<\>\@\,\;\:\"\.\[\]\\]/) do
|
||||||
"\"\\\"" <> String.replace(email_name, "\"", "\\\"") <> "\\\"\""
|
"\"\\\"" <> String.replace(email_name, "\"", "\\\"") <> "\\\"\""
|
||||||
@ -33,15 +35,4 @@ defmodule Mailex.Address do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def envelope_format(emails) when is_list(emails), do:
|
|
||||||
emails |> Enum.map(&envelope_format(&1))
|
|
||||||
|
|
||||||
|
|
||||||
def envelope_format(email) when is_map(email) do
|
|
||||||
email_address = Map.get(email, "address", Map.get(email, :address))
|
|
||||||
"<#{email_address}>"
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -3,15 +3,14 @@ defmodule Mailex.Render do
|
|||||||
alias Mailex.Address
|
alias Mailex.Address
|
||||||
|
|
||||||
def render(email) do
|
def render(email) do
|
||||||
mimemail_args = []
|
mimemail_args = if email.text, do:
|
||||||
if email.text, do:
|
[ { :plain, email.text } ], else: []
|
||||||
mimemail_args = [ { :plain, email.text } | mimemail_args]
|
mimemail_args = if email.html, do:
|
||||||
if email.html, do:
|
[ { :html, email.html } | mimemail_args], else: mimemail_args
|
||||||
mimemail_args = [ { :html, email.html } | mimemail_args]
|
mimemail_args = if email.attachments, do:
|
||||||
if email.attachments, do:
|
[ Enum.map(email.attachments, fn(a) -> { :attachment, a.data, a } end) | mimemail_args ], else: mimemail_args
|
||||||
mimemail_args = [ Enum.map(email.attachments, fn(a) -> { :attachment, a.data, a } end) | mimemail_args ]
|
|
||||||
|
|
||||||
mimemail_args |> List.flatten |> to_tuple(email) |> :mimemail.encode
|
List.flatten(mimemail_args) |> to_tuple(email) |> :mimemail.encode
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -107,24 +106,16 @@ defmodule Mailex.Render do
|
|||||||
|
|
||||||
|
|
||||||
def headers_for(email) do
|
def headers_for(email) do
|
||||||
headers = []
|
headers = if email.reply_to && (length(email.reply_to) > 0), do:
|
||||||
|
[ { "Reply-To", email.reply_to |> stringify_addresses } ], else: []
|
||||||
if email.reply_to && (length(email.reply_to) > 0), do:
|
|
||||||
headers = [ { "Reply-To", email.reply_to |> stringify_addresses } ]
|
|
||||||
|
|
||||||
# BCC should not go into headers
|
# BCC should not go into headers
|
||||||
|
headers = if email.cc && (length(email.cc) > 0), do:
|
||||||
if email.cc && (length(email.cc) > 0), do:
|
[ { "Cc", email.cc |> stringify_addresses } | headers ], else: headers
|
||||||
headers = [ { "Cc", email.cc |> stringify_addresses } | headers ]
|
headers = if email.to && (length(email.to) > 0), do:
|
||||||
|
[ { "To", email.to |> stringify_addresses } | headers ], else: headers
|
||||||
if email.to && (length(email.to) > 0), do:
|
headers = if email.headers && (length(email.headers) > 0), do:
|
||||||
headers = [ { "To", email.to |> stringify_addresses } | headers ]
|
headers ++ email.headers, else: headers
|
||||||
|
[ { "From", email.from |> stringify_addresses }, { "Subject", email.subject || "" } | headers ]
|
||||||
if email.headers && (length(email.headers) > 0), do:
|
|
||||||
headers = headers ++ email.headers
|
|
||||||
|
|
||||||
[ { "From", email.from |> stringify_addresses },
|
|
||||||
{ "Subject", email.subject || "" } | headers ]
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -141,4 +132,4 @@ defmodule Mailex.Render do
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
BIN
test/.DS_Store
vendored
BIN
test/.DS_Store
vendored
Binary file not shown.
Loading…
Reference in New Issue
Block a user