Add a registration email that only sends if no other emails (welcome, approval, confi...
authorMark Felder <feld@feld.me>
Thu, 4 Feb 2021 21:16:50 +0000 (15:16 -0600)
committerMark Felder <feld@feld.me>
Thu, 4 Feb 2021 21:16:50 +0000 (15:16 -0600)
lib/pleroma/emails/user_email.ex
lib/pleroma/user.ex

index 0c00069e20f3d70ec43821ec93c808d9b76e0193..a5233f373104015e49b8c0bb333cd578e5327258 100644 (file)
@@ -106,6 +106,20 @@ defmodule Pleroma.Emails.UserEmail do
     |> html_body(html_body)
   end
 
+  def successful_registration_email(user) do
+    html_body = """
+    <h3>Hello @#{user.nickname}</h3>
+    <p>Your account at #{instance_name()} has been registered successfully.</p>
+    <p>No further action is required to activate your account.</p>
+    """
+
+    new()
+    |> to(recipient(user))
+    |> from(sender())
+    |> subject("Account registered on #{instance_name()}")
+    |> html_body(html_body)
+  end
+
   @doc """
   Email used in digest email notifications
   Includes Mentions and New Followers data
index 7a7956c8f3a8afcbf22108bfe732228b51d003c2..1d7cb22b20e431cb8d3e77e2576ea0d568fd4f6b 100644 (file)
@@ -814,6 +814,7 @@ defmodule Pleroma.User do
     with {:ok, user} <- autofollow_users(user),
          {:ok, _} <- autofollowing_users(user),
          {:ok, user} <- set_cache(user),
+         {:ok, _} <- maybe_send_registration_email(user),
          {:ok, _} <- maybe_send_welcome_email(user),
          {:ok, _} <- maybe_send_welcome_message(user),
          {:ok, _} <- maybe_send_welcome_chat_message(user) do
@@ -892,6 +893,23 @@ defmodule Pleroma.User do
     user
   end
 
+  @spec maybe_send_registration_email(User.t()) :: {:ok, :enqueued | :noop}
+  defp maybe_send_registration_email(%User{email: email} = user) when is_binary(email) do
+    with false <- User.WelcomeEmail.enabled?(),
+         false <- Config.get([:instance, :account_activation_required], false),
+         false <- Config.get([:instance, :account_approval_required], false) do
+      user
+      |> Pleroma.Emails.UserEmail.successful_registration_email()
+
+      {:ok, :enqueued}
+    else
+      _ ->
+        {:ok, :noop}
+    end
+  end
+
+  defp maybe_send_registration_email(_), do: {:ok, :noop}
+
   def needs_update?(%User{local: true}), do: false
 
   def needs_update?(%User{local: false, last_refreshed_at: nil}), do: true