2
0

Add optional bulk mailer settings (#35203)

This commit is contained in:
David Roetzel
2025-06-30 16:49:14 +02:00
committed by GitHub
parent bae258925c
commit c357a7f8d6
11 changed files with 90 additions and 7 deletions

View File

@@ -0,0 +1,18 @@
# frozen_string_literal: true
module BulkMailSettingsConcern
include ActiveSupport::Concern
include Mastodon::EmailConfigurationHelper
private
def use_bulk_mail_delivery_settings
return if bulk_mail_configuration&.dig(:smtp_settings, :address).blank?
mail.delivery_method.settings = convert_smtp_settings(bulk_mail_configuration[:smtp_settings])
end
def bulk_mail_configuration
Rails.configuration.x.email&.bulk_mail
end
end

View File

@@ -1,6 +1,8 @@
# frozen_string_literal: true
class UserMailer < Devise::Mailer
include BulkMailSettingsConcern
layout 'mailer'
helper :accounts
@@ -12,6 +14,8 @@ class UserMailer < Devise::Mailer
before_action :set_instance
after_action :use_bulk_mail_delivery_settings, only: [:announcement_published, :terms_of_service_changed]
default to: -> { @resource.email }
def confirmation_instructions(user, token, *, **)

View File

@@ -2,7 +2,7 @@
class Admin::DistributeAnnouncementNotificationWorker
include Sidekiq::IterableJob
include BulkMailer
include BulkMailingConcern
def build_enumerator(announcement_id, cursor:)
@announcement = Announcement.find(announcement_id)

View File

@@ -2,7 +2,7 @@
class Admin::DistributeTermsOfServiceNotificationWorker
include Sidekiq::IterableJob
include BulkMailer
include BulkMailingConcern
def build_enumerator(terms_of_service_id, cursor:)
@terms_of_service = TermsOfService.find(terms_of_service_id)

View File

@@ -1,6 +1,6 @@
# frozen_string_literal: true
module BulkMailer
module BulkMailingConcern
def push_bulk_mailer(mailer_class, mailer_method, args_array)
raise ArgumentError, "No method #{mailer_method} on class #{mailer_class.name}" unless mailer_class.respond_to?(mailer_method)