Skip to content

Commit

Permalink
Handle tuple based Reply-To headers in Raw content renderer
Browse files Browse the repository at this point in the history
  • Loading branch information
michallepicki committed Sep 10, 2024
1 parent 9c4fa60 commit c4a0027
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 1 deletion.
8 changes: 7 additions & 1 deletion lib/bamboo/adapters/render/raw.ex
Original file line number Diff line number Diff line change
Expand Up @@ -165,13 +165,19 @@ defmodule BambooSes.Render.Raw do
[
{"From", mailbox(email.from)},
{"Subject", email.subject}
] ++ Map.to_list(email.headers)
] ++ Enum.map(email.headers, &preprocess_header/1)

Enum.filter(headers, fn i -> elem(i, 1) != "" end)
end

defp mailbox({name, address}), do: "#{name} <#{address}>"

defp preprocess_header({"Reply-To" = key, {_name, _address} = value}) do
{key, BambooSes.Encoding.prepare_address(value)}
end

defp preprocess_header({key, value}), do: {key, value}

defp compile_parts(email) do
[
{:plain, email.text_body},
Expand Down
28 changes: 28 additions & 0 deletions test/lib/bamboo/adapters/ses_adapter_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,34 @@ defmodule Bamboo.SesAdapterTest do
SesAdapter.deliver(TestHelpers.new_email(), %{})
end

test "does not crash with Reply-To tuple and sending raw content" do
expected_request_fn = fn _, _, body, _, _ ->
{:ok, message} = Jason.decode(body)

%{
"Content" => %{
"Raw" => %{
"Data" => raw_content
}
}
} = message

email = EmailParser.parse(raw_content)

assert header_value = EmailParser.header(email, "Reply-To")
assert header_value == "John Schmidt <[email protected]>"

{:ok, %{status_code: 200, body: body}}
end

expect(HttpMock, :request, expected_request_fn)

TestHelpers.new_email()
|> Email.put_header("X-Custom-Header", "header-value")
|> Email.put_header("Reply-To", {"John Schmidt", "[email protected]"})
|> SesAdapter.deliver(%{})
end

test "uses configured aws region" do
expect(HttpMock, :request, fn _,
"https://email.eu-west-1.amazonaws.com/v2/email/outbound-emails",
Expand Down

0 comments on commit c4a0027

Please sign in to comment.