@@ -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 '<tag>', 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