From c109ee246e633738789d75ccdd537dcf3f62c8d5 Mon Sep 17 00:00:00 2001 From: Philipp Date: Sat, 10 Feb 2024 09:42:31 +0100 Subject: [PATCH] Add Mailgun base_url sender config option --- CHANGELOG.md | 1 + lib/keila/mailings/sender_adapters/mailgun.ex | 10 +++++++--- .../templates/sender/_mailgun_config.html.heex | 15 +++++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 311e1b29..c418c536 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Added new Gmail user agent to avoid tracking invalid clicks/opens - Return to list of unsubscribed/unreachable contacts after delete action from one of those pages. Implements #193 (thanks @digitalfredy for reporting) +- It's now possible to choose between the US and EU API endpoints for Mailgun senders (thanks @harryfear for reporting) ## Fixed - Clicking "Delete all" on the contacts list no longer causes a server error diff --git a/lib/keila/mailings/sender_adapters/mailgun.ex b/lib/keila/mailings/sender_adapters/mailgun.ex index ef49c4a4..28dba412 100644 --- a/lib/keila/mailings/sender_adapters/mailgun.ex +++ b/lib/keila/mailings/sender_adapters/mailgun.ex @@ -4,18 +4,21 @@ defmodule Keila.Mailings.SenderAdapters.Mailgun do @impl true def name, do: "mailgun" + @base_url "https://api.mailgun.net/v3" + @impl true def schema_fields do [ mailgun_api_key: :string, - mailgun_domain: :string + mailgun_domain: :string, + mailgun_base_url: :string ] end @impl true def changeset(changeset, params) do changeset - |> cast(params, [:mailgun_api_key, :mailgun_domain]) + |> cast(params, [:mailgun_api_key, :mailgun_domain, :mailgun_base_url]) |> validate_required([:mailgun_api_key, :mailgun_domain]) end @@ -24,7 +27,8 @@ defmodule Keila.Mailings.SenderAdapters.Mailgun do [ adapter: Swoosh.Adapters.Mailgun, api_key: config.mailgun_api_key, - domain: config.mailgun_domain + domain: config.mailgun_domain, + base_url: config.mailgun_base_url || @base_url ] end end diff --git a/lib/keila_web/templates/sender/_mailgun_config.html.heex b/lib/keila_web/templates/sender/_mailgun_config.html.heex index 837e1596..ef379380 100644 --- a/lib/keila_web/templates/sender/_mailgun_config.html.heex +++ b/lib/keila_web/templates/sender/_mailgun_config.html.heex @@ -5,6 +5,21 @@ <% end %> +
+ <%= label(@form, :mailgun_base_url, "Base URL") %> + <%= with_validation(@form, :mailgun_base_url) do %> + <%= select( + @form, + :mailgun_base_url, + [ + "https://api.mailgun.net/v3", + "https://api.eu.mailgun.net/v3" + ], + class: "text-black" + ) %> + <% end %> +
+ <%= if is_nil(input_value(@form, :mailgun_api_key)) do %>
<%= label(@form, :mailgun_api_key, gettext("API Key")) %>