##// END OF EJS Templates
Log email delivery errors (#14403)....
Jean-Philippe Lang -
r11780:8ff33ac9f781
parent child
Show More
@@ -430,7 +430,17 class Mailer < ActionMailer::Base
430 430
431 431 def self.deliver_mail(mail)
432 432 return false if mail.to.blank? && mail.cc.blank? && mail.bcc.blank?
433 super
433 begin
434 # Log errors when raise_delivery_errors is set to false, Rails does not
435 mail.raise_delivery_errors = true
436 super
437 rescue Exception => e
438 if ActionMailer::Base.raise_delivery_errors
439 raise e
440 else
441 Rails.logger.error "Email delivery error: #{e.message}"
442 end
443 end
434 444 end
435 445
436 446 def self.method_missing(method, *args, &block)
@@ -661,6 +661,29 class MailerTest < ActiveSupport::TestCase
661 661 assert_include '&lt;tag&gt;', html_part.body.encoded
662 662 end
663 663
664 def test_should_raise_delivery_errors_when_raise_delivery_errors_is_true
665 mail = Mailer.test_email(User.find(1))
666 mail.delivery_method.stubs(:deliver!).raises(Exception.new("delivery error"))
667
668 ActionMailer::Base.raise_delivery_errors = true
669 assert_raise Exception, "delivery error" do
670 mail.deliver
671 end
672 ensure
673 ActionMailer::Base.raise_delivery_errors = false
674 end
675
676 def test_should_log_delivery_errors_when_raise_delivery_errors_is_false
677 mail = Mailer.test_email(User.find(1))
678 mail.delivery_method.stubs(:deliver!).raises(Exception.new("delivery error"))
679
680 Rails.logger.expects(:error).with("Email delivery error: delivery error")
681 ActionMailer::Base.raise_delivery_errors = false
682 assert_nothing_raised do
683 mail.deliver
684 end
685 end
686
664 687 private
665 688
666 689 def last_email
General Comments 0
You need to be logged in to leave comments. Login now