defmodule Plausible.Mailer do use Bamboo.Mailer, otp_app: :plausible require Logger @spec send(Bamboo.Email.t()) :: :ok | {:error, :unknown_error} def send(email) do 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__} Logger.error(log, crash_reason: crash_reason) {:error, :unknown_error} else _sent_email -> :ok end end end