+ {{/if}}
{{/if}}
{{preference-checkbox labelKey="user.email_private_messages" checked=email_private_messages}}
{{preference-checkbox labelKey="user.email_direct" checked=email_direct}}
diff --git a/app/jobs/scheduled/enqueue_digest_emails.rb b/app/jobs/scheduled/enqueue_digest_emails.rb
index e763d89fe..0e373a149 100644
--- a/app/jobs/scheduled/enqueue_digest_emails.rb
+++ b/app/jobs/scheduled/enqueue_digest_emails.rb
@@ -5,8 +5,10 @@ module Jobs
every 6.hours
def execute(args)
- target_user_ids.each do |user_id|
- Jobs.enqueue(:user_email, type: :digest, user_id: user_id)
+ unless SiteSetting.disable_digest_emails?
+ target_user_ids.each do |user_id|
+ Jobs.enqueue(:user_email, type: :digest, user_id: user_id)
+ end
end
end
diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml
index 985cbc59c..045aeca7e 100644
--- a/config/locales/server.en.yml
+++ b/config/locales/server.en.yml
@@ -991,6 +991,7 @@ en:
digest_min_excerpt_length: "Minimum post excerpt in the email digest, in characters."
default_digest_email_frequency: "How often users receive digest emails by default. They can change this setting in their preferences."
suppress_digest_email_after_days: "Suppress digest emails for users not seen on the site for more than (n) days."
+ disable_digest_emails: "Disable digest emails for all users."
default_external_links_in_new_tab: "Open external links in a new tab. Users can change this in their preferences."
detect_custom_avatars: "Whether or not to check that users have uploaded custom avatars."
diff --git a/config/site_settings.yml b/config/site_settings.yml
index 9d1dba6c5..2bc813356 100644
--- a/config/site_settings.yml
+++ b/config/site_settings.yml
@@ -409,6 +409,9 @@ email:
default: 7
enum: 'DigestEmailSiteSetting'
suppress_digest_email_after_days: 365
+ disable_digest_emails:
+ default: false
+ client: true
email_custom_headers: 'Auto-Submitted: auto-generated'
email_subject: '[%{site_name}] %{optional_pm}%{optional_cat}%{topic_title}'
reply_by_email_enabled: false
diff --git a/spec/jobs/enqueue_digest_emails_spec.rb b/spec/jobs/enqueue_digest_emails_spec.rb
index baaf30080..2c32d3431 100644
--- a/spec/jobs/enqueue_digest_emails_spec.rb
+++ b/spec/jobs/enqueue_digest_emails_spec.rb
@@ -89,13 +89,28 @@ describe Jobs::EnqueueDigestEmails do
let(:user) { Fabricate(:user) }
- before do
- Jobs::EnqueueDigestEmails.any_instance.expects(:target_user_ids).returns([user.id])
+ context "digest emails are enabled" do
+ before do
+ Jobs::EnqueueDigestEmails.any_instance.expects(:target_user_ids).returns([user.id])
+ end
+
+ it "enqueues the digest email job" do
+ SiteSetting.stubs(:disable_digest_emails?).returns(false)
+ Jobs.expects(:enqueue).with(:user_email, type: :digest, user_id: user.id)
+ Jobs::EnqueueDigestEmails.new.execute({})
+ end
end
- it "enqueues the digest email job" do
- Jobs.expects(:enqueue).with(:user_email, type: :digest, user_id: user.id)
- Jobs::EnqueueDigestEmails.new.execute({})
+ context "digest emails are disabled" do
+ before do
+ Jobs::EnqueueDigestEmails.any_instance.expects(:target_user_ids).never
+ end
+
+ it "does not enqueue the digest email job" do
+ SiteSetting.stubs(:disable_digest_emails?).returns(true)
+ Jobs.expects(:enqueue).with(:user_email, type: :digest, user_id: user.id).never
+ Jobs::EnqueueDigestEmails.new.execute({})
+ end
end
end