diff --git a/lib/email/sender.rb b/lib/email/sender.rb index 34233d67d20..7c68f55bab4 100644 --- a/lib/email/sender.rb +++ b/lib/email/sender.rb @@ -22,7 +22,7 @@ module Email end def send - return if SiteSetting.disable_emails + return if SiteSetting.disable_emails && @email_type.to_s != "admin_login" return if ActionMailer::Base::NullMail === @message return if ActionMailer::Base::NullMail === (@message.message rescue nil) diff --git a/spec/components/email/sender_spec.rb b/spec/components/email/sender_spec.rb index 1fc6d71ad18..cb67f81654d 100644 --- a/spec/components/email/sender_spec.rb +++ b/spec/components/email/sender_spec.rb @@ -4,12 +4,19 @@ require 'email/sender' describe Email::Sender do it "doesn't deliver mail when mails are disabled" do - SiteSetting.expects(:disable_emails).returns(true) + SiteSetting.disable_emails = true Mail::Message.any_instance.expects(:deliver_now).never message = Mail::Message.new(to: "hello@world.com" , body: "hello") expect(Email::Sender.new(message, :hello).send).to eq(nil) end + it "delivers mail when mails are disabled but the email_type is admin_login" do + SiteSetting.disable_emails = true + Mail::Message.any_instance.expects(:deliver_now).once + message = Mail::Message.new(to: "hello@world.com" , body: "hello") + Email::Sender.new(message, :admin_login).send + end + it "doesn't deliver mail when the message is of type NullMail" do Mail::Message.any_instance.expects(:deliver_now).never message = ActionMailer::Base::NullMail.new