diff --git a/app/models/mailer.rb b/app/models/mailer.rb index 53c01e1cd..c82e1150e 100644 --- a/app/models/mailer.rb +++ b/app/models/mailer.rb @@ -31,6 +31,9 @@ class Mailer < ActionMailer::Base class DeliveryJob < ActionMailer::MailDeliveryJob include Redmine::JobWrapper + # Do not enqueue the job when deliveries are disabled + before_enqueue {throw :abort unless ActionMailer::Base.perform_deliveries} + around_enqueue :keep_current_user end diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb index ab880ef45..2d36ef327 100644 --- a/test/unit/mailer_test.rb +++ b/test/unit/mailer_test.rb @@ -1103,6 +1103,18 @@ class MailerTest < ActiveSupport::TestCase assert ActionMailer::Base.perform_deliveries end + def test_with_deliveries_off_should_not_enqueue_delivery_jobs + previous_adapter = ActionMailer::MailDeliveryJob.queue_adapter + ActionMailer::MailDeliveryJob.queue_adapter = :test + Mailer.with_deliveries false do + Mailer.test_email(User.find(1)).deliver_later + end + assert_empty ActionMailer::MailDeliveryJob.queue_adapter.enqueued_jobs + assert ActionMailer::Base.deliveries.empty? + ensure + ActionMailer::MailDeliveryJob.queue_adapter = previous_adapter + end + def test_token_for_should_strip_trailing_gt_from_address_with_full_name with_settings :mail_from => "Redmine Mailer" do assert_match /\Aredmine.issue-\d+\.\d+\.3@redmine.org\z/,