Skip to content

Commit 14fa39e

Browse files
authored
log mailer errors in ce (#4885)
1 parent 6ed8463 commit 14fa39e

File tree

1 file changed

+12
-25
lines changed

1 file changed

+12
-25
lines changed

lib/plausible/mailer.ex

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,21 @@ defmodule Plausible.Mailer do
22
use Bamboo.Mailer, otp_app: :plausible
33
require Logger
44

5-
@type result() :: :ok | {:error, :hard_bounce} | {:error, :unknown_error}
6-
7-
@spec send(Bamboo.Email.t()) :: result()
5+
@spec send(Bamboo.Email.t()) :: :ok | {:error, :unknown_error}
86
def send(email) do
9-
case deliver_now(email) do
10-
{:ok, _email} -> :ok
11-
{:ok, _email, _response} -> :ok
12-
{:error, error} -> handle_error(error)
13-
end
14-
end
15-
16-
defp handle_error(%{response: response}) when is_binary(response) do
17-
case Jason.decode(response) do
18-
{:ok, %{"ErrorCode" => 406}} ->
19-
{:error, :hard_bounce}
7+
try do
8+
deliver_now!(email)
9+
rescue
10+
e ->
11+
# this message is ignored by Sentry, only appears in logs
12+
log = "Failed to send e-mail:\n\n " <> Exception.format(:error, e, __STACKTRACE__)
13+
# Sentry report is built entirely from crash_reason
14+
crash_reason = {e, __STACKTRACE__}
2015

21-
{:ok, response} ->
22-
Logger.error("Failed to send e-mail", sentry: %{extra: %{response: inspect(response)}})
23-
{:error, :unknown_error}
24-
25-
{:error, _any} ->
26-
Logger.error("Failed to send e-mail", sentry: %{extra: %{response: inspect(response)}})
16+
Logger.error(log, crash_reason: crash_reason)
2717
{:error, :unknown_error}
18+
else
19+
_sent_email -> :ok
2820
end
2921
end
30-
31-
defp handle_error(error) do
32-
Logger.error("Failed to send e-mail", sentry: %{extra: %{response: inspect(error)}})
33-
{:error, :unknown_error}
34-
end
3522
end

0 commit comments

Comments
 (0)