Compare commits

..

2 Commits

Author SHA1 Message Date
da1e914af0 updated for elixir 1.3 2016-07-29 15:13:00 +02:00
98613e1a6f updated for elixir 1.3 2016-07-29 15:12:39 +02:00
6 changed files with 33 additions and 50 deletions

BIN
.DS_Store vendored

Binary file not shown.

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
.DS_Store
/_build
/cover
/deps

View File

@ -1,10 +1,8 @@
defmodule Mailex.Address do
defstruct name: nil, address: nil
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
email_address = Map.get(email, "address", Map.get(email, :address))
@ -14,17 +12,21 @@ defmodule Mailex.Address do
"#{email_name} <#{email_address}>"
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
if email_name do
email_name = String.strip(email_name)
else
email_name = address |>
String.split("@") |>
List.first |>
String.split(~r/([^\w\s]|_)/) |>
Enum.map(&String.capitalize/1) |>
Enum.join(" ")
email_name = case email_name do
nil -> address
|> String.split("@")
|> List.first
|> String.split(~r/([^\w\s]|_)/)
|> Enum.map(&String.capitalize/1)
|> Enum.join(" ")
_ -> String.strip(email_name)
end
if String.match?(email_name, ~r/[\(\)\<\>\@\,\;\:\"\.\[\]\\]/) do
"\"\\\"" <> String.replace(email_name, "\"", "\\\"") <> "\\\"\""
@ -33,15 +35,4 @@ defmodule Mailex.Address do
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

View File

@ -3,15 +3,14 @@ defmodule Mailex.Render do
alias Mailex.Address
def render(email) do
mimemail_args = []
if email.text, do:
mimemail_args = [ { :plain, email.text } | mimemail_args]
if email.html, do:
mimemail_args = [ { :html, email.html } | mimemail_args]
if email.attachments, do:
mimemail_args = [ Enum.map(email.attachments, fn(a) -> { :attachment, a.data, a } end) | mimemail_args ]
mimemail_args = if email.text, do:
[ { :plain, email.text } ], else: []
mimemail_args = if email.html, do:
[ { :html, email.html } | mimemail_args], else: mimemail_args
mimemail_args = if email.attachments, do:
[ Enum.map(email.attachments, fn(a) -> { :attachment, a.data, a } end) | mimemail_args ], else: mimemail_args
mimemail_args |> List.flatten |> to_tuple(email) |> :mimemail.encode
List.flatten(mimemail_args) |> to_tuple(email) |> :mimemail.encode
end
@ -107,24 +106,16 @@ defmodule Mailex.Render do
def headers_for(email) do
headers = []
if email.reply_to && (length(email.reply_to) > 0), do:
headers = [ { "Reply-To", email.reply_to |> stringify_addresses } ]
headers = if email.reply_to && (length(email.reply_to) > 0), do:
[ { "Reply-To", email.reply_to |> stringify_addresses } ], else: []
# BCC should not go into headers
if email.cc && (length(email.cc) > 0), do:
headers = [ { "Cc", email.cc |> stringify_addresses } | headers ]
if email.to && (length(email.to) > 0), do:
headers = [ { "To", email.to |> stringify_addresses } | headers ]
if email.headers && (length(email.headers) > 0), do:
headers = headers ++ email.headers
[ { "From", email.from |> stringify_addresses },
{ "Subject", email.subject || "" } | headers ]
headers = if email.cc && (length(email.cc) > 0), do:
[ { "Cc", email.cc |> stringify_addresses } | headers ], else: headers
headers = if email.to && (length(email.to) > 0), do:
[ { "To", email.to |> stringify_addresses } | headers ], else: headers
headers = if email.headers && (length(email.headers) > 0), do:
headers ++ email.headers, else: headers
[ { "From", email.from |> stringify_addresses }, { "Subject", email.subject || "" } | headers ]
end

View File

@ -1,2 +1,2 @@
%{"eiconv": {:git, "https://github.com/zotonic/eiconv.git", "644fb5e7bd6640fbd073f4d28957914ea979aea0", []},
"gen_smtp": {:hex, :gen_smtp, "0.9.0"}}
"gen_smtp": {:hex, :gen_smtp, "0.11.0", "d90ff2f021fc86cb2a4259b1f2b177ab6e506676265e26454bf5755855adc956", [:rebar3], []}}

BIN
test/.DS_Store vendored

Binary file not shown.