updated for elixir 1.3
This commit is contained in:
		
							
								
								
									
										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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								test/.DS_Store
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								test/.DS_Store
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user