log mailer errors in ce (#4885)
This commit is contained in:
parent
6ed846395f
commit
14fa39e0b1
|
|
@ -2,34 +2,21 @@ defmodule Plausible.Mailer do
|
|||
use Bamboo.Mailer, otp_app: :plausible
|
||||
require Logger
|
||||
|
||||
@type result() :: :ok | {:error, :hard_bounce} | {:error, :unknown_error}
|
||||
|
||||
@spec send(Bamboo.Email.t()) :: result()
|
||||
@spec send(Bamboo.Email.t()) :: :ok | {:error, :unknown_error}
|
||||
def send(email) do
|
||||
case deliver_now(email) do
|
||||
{:ok, _email} -> :ok
|
||||
{:ok, _email, _response} -> :ok
|
||||
{:error, error} -> handle_error(error)
|
||||
end
|
||||
end
|
||||
try do
|
||||
deliver_now!(email)
|
||||
rescue
|
||||
e ->
|
||||
# this message is ignored by Sentry, only appears in logs
|
||||
log = "Failed to send e-mail:\n\n " <> Exception.format(:error, e, __STACKTRACE__)
|
||||
# Sentry report is built entirely from crash_reason
|
||||
crash_reason = {e, __STACKTRACE__}
|
||||
|
||||
defp handle_error(%{response: response}) when is_binary(response) do
|
||||
case Jason.decode(response) do
|
||||
{:ok, %{"ErrorCode" => 406}} ->
|
||||
{:error, :hard_bounce}
|
||||
|
||||
{:ok, response} ->
|
||||
Logger.error("Failed to send e-mail", sentry: %{extra: %{response: inspect(response)}})
|
||||
{:error, :unknown_error}
|
||||
|
||||
{:error, _any} ->
|
||||
Logger.error("Failed to send e-mail", sentry: %{extra: %{response: inspect(response)}})
|
||||
Logger.error(log, crash_reason: crash_reason)
|
||||
{:error, :unknown_error}
|
||||
else
|
||||
_sent_email -> :ok
|
||||
end
|
||||
end
|
||||
|
||||
defp handle_error(error) do
|
||||
Logger.error("Failed to send e-mail", sentry: %{extra: %{response: inspect(error)}})
|
||||
{:error, :unknown_error}
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue