##// 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 def self.deliver_mail(mail)
431 def self.deliver_mail(mail)
432 return false if mail.to.blank? && mail.cc.blank? && mail.bcc.blank?
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 end
444 end
435
445
436 def self.method_missing(method, *args, &block)
446 def self.method_missing(method, *args, &block)
@@ -661,6 +661,29 class MailerTest < ActiveSupport::TestCase
661 assert_include '&lt;tag&gt;', html_part.body.encoded
661 assert_include '&lt;tag&gt;', html_part.body.encoded
662 end
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 private
687 private
665
688
666 def last_email
689 def last_email
General Comments 0
You need to be logged in to leave comments. Login now