updated for elixir 1.3
This commit is contained in:
		@ -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
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user