diff options
| author | dcc <dcc@logografos.com> | 2023-09-02 00:52:52 -0700 |
|---|---|---|
| committer | dcc <dcc@logografos.com> | 2023-09-02 00:52:52 -0700 |
| commit | 3a4773c3c2bd0bbef244eb519b07208da9108e49 (patch) | |
| tree | 973567a6f3abb37bfb0f785b1cad14ed55840ef5 /lib/pleroma/emails/admin_email.ex | |
| download | anni-3a4773c3c2bd0bbef244eb519b07208da9108e49.tar.gz anni-3a4773c3c2bd0bbef244eb519b07208da9108e49.tar.bz2 anni-3a4773c3c2bd0bbef244eb519b07208da9108e49.zip | |
First
Diffstat (limited to 'lib/pleroma/emails/admin_email.ex')
| -rw-r--r-- | lib/pleroma/emails/admin_email.ex | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/lib/pleroma/emails/admin_email.ex b/lib/pleroma/emails/admin_email.ex new file mode 100644 index 0000000..372e552 --- /dev/null +++ b/lib/pleroma/emails/admin_email.ex @@ -0,0 +1,99 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# 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 = """ + <h3>Instance Test Email</h3> + <p>A test email was requested. Hello. :)</p> + """ + + 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 + "<p>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) + "<li><a href=\"#{status_url}\">#{status_url}</li>" + + %{"id" => id} when is_binary(id) -> + "<li><a href=\"#{id}\">#{id}</li>" + + id when is_binary(id) -> + "<li><a href=\"#{id}\">#{id}</li>" + end) + |> Enum.join("\n") + + """ + <p> Statuses: + <ul> + #{statuses_list_html} + </ul> + </p> + """ + else + "" + end + + html_body = """ + <p>Reported by: <a href="#{reporter.ap_id}">#{reporter.nickname}</a></p> + <p>Reported Account: <a href="#{account.ap_id}">#{account.nickname}</a></p> + #{comment_html} + #{statuses_html} + <p> + <a href="#{Pleroma.Web.Endpoint.url()}/pleroma/admin/#/reports/index">View Reports in AdminFE</a> + """ + + 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 = """ + <p>New account for review: <a href="#{account.ap_id}">@#{account.nickname}</a></p> + <blockquote>#{HTML.strip_tags(account.registration_reason)}</blockquote> + <a href="#{Pleroma.Web.Endpoint.url()}/pleroma/admin/#/users/#{account.id}/">Visit AdminFE</a> + """ + + 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 |
