aboutsummaryrefslogtreecommitdiff
path: root/lib/mix/tasks/pleroma/email.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mix/tasks/pleroma/email.ex')
-rw-r--r--lib/mix/tasks/pleroma/email.ex44
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/mix/tasks/pleroma/email.ex b/lib/mix/tasks/pleroma/email.ex
new file mode 100644
index 0000000..37272c1
--- /dev/null
+++ b/lib/mix/tasks/pleroma/email.ex
@@ -0,0 +1,44 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Mix.Tasks.Pleroma.Email do
+ use Mix.Task
+ import Mix.Pleroma
+
+ @shortdoc "Email administrative tasks"
+ @moduledoc File.read!("docs/administration/CLI_tasks/email.md")
+
+ def run(["test" | args]) do
+ start_pleroma()
+
+ {options, [], []} =
+ OptionParser.parse(
+ args,
+ strict: [
+ to: :string
+ ]
+ )
+
+ email = Pleroma.Emails.AdminEmail.test_email(options[:to])
+ {:ok, _} = Pleroma.Emails.Mailer.deliver(email)
+
+ shell_info("Test email has been sent to #{inspect(email.to)} from #{inspect(email.from)}")
+ end
+
+ def run(["resend_confirmation_emails"]) do
+ start_pleroma()
+
+ shell_info("Sending emails to all unconfirmed users")
+
+ Pleroma.User.Query.build(%{
+ local: true,
+ is_active: true,
+ is_confirmed: false,
+ invisible: false
+ })
+ |> Pleroma.Repo.chunk_stream(500)
+ |> Stream.each(&Pleroma.User.maybe_send_confirmation_email(&1))
+ |> Stream.run()
+ end
+end