# Pleroma: A lightweight social networking server # Copyright © 2017-2023 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Emails.AdminEmail do @moduledoc "Admin emails" import Swoosh.Email alias Pleroma.Config alias Pleroma.HTML alias Pleroma.Web.Router.Helpers defp instance_config, do: Config.get(:instance) defp instance_name, do: instance_config()[:name] defp instance_notify_email do Keyword.get(instance_config(), :notify_email, instance_config()[:email]) end def test_email(mail_to \\ nil) do html_body = """

Instance Test Email

A test email was requested. Hello. :)

""" new() |> to(mail_to || Config.get([:instance, :email])) |> from({instance_name(), instance_notify_email()}) |> subject("Instance Test Email") |> html_body(html_body) end def report(to, reporter, account, statuses, comment) do comment_html = if comment do "

Comment: #{comment}" else "" end statuses_html = if is_list(statuses) && length(statuses) > 0 do statuses_list_html = statuses |> Enum.map(fn %{id: id} -> status_url = Helpers.o_status_url(Pleroma.Web.Endpoint, :notice, id) "

  • #{status_url}
  • " %{"id" => id} when is_binary(id) -> "
  • #{id}
  • " id when is_binary(id) -> "
  • #{id}
  • " end) |> Enum.join("\n") """

    Statuses:

    """ else "" end html_body = """

    Reported by: #{reporter.nickname}

    Reported Account: #{account.nickname}

    #{comment_html} #{statuses_html}

    View Reports in AdminFE """ new() |> to({to.name, to.email}) |> from({instance_name(), instance_notify_email()}) |> subject("#{instance_name()} Report") |> html_body(html_body) end def new_unapproved_registration(to, account) do html_body = """

    New account for review: @#{account.nickname}

    #{HTML.strip_tags(account.registration_reason)}
    Visit AdminFE """ new() |> to({to.name, to.email}) |> from({instance_name(), instance_notify_email()}) |> subject("New account up for review on #{instance_name()} (@#{account.nickname})") |> html_body(html_body) end end