diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 7acdae2..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.gitignore b/.gitignore index 755b605..2311b3c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.DS_Store /_build /cover /deps diff --git a/lib/mailex/address.ex b/lib/mailex/address.ex index 9afc2f9..fd8a318 100644 --- a/lib/mailex/address.ex +++ b/lib/mailex/address.ex @@ -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 diff --git a/lib/mailex/render.ex b/lib/mailex/render.ex index 7003d95..355dcf1 100644 --- a/lib/mailex/render.ex +++ b/lib/mailex/render.ex @@ -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 @@ -141,4 +132,4 @@ defmodule Mailex.Render do end -end \ No newline at end of file +end diff --git a/test/.DS_Store b/test/.DS_Store deleted file mode 100644 index faa1621..0000000 Binary files a/test/.DS_Store and /dev/null differ