Sha256: 247bcd07e299618a8d24021e6325d1e10cadb3202184ef77a20dd8bb83cca8be

Contents?: true

Size: 972 Bytes

Versions: 3

Compression:

Stored size: 972 Bytes

Contents

require 'actionmailer'

class ActionMailer::Base
  class << self
    def smtp_settings_by_from_address
      @smtp_settings_by_from_address ||= {}
    end
  end
  
  def deliver_with_intelligent_smtp!(mail = @mail)
    if ActionMailer::Base.smtp_settings_by_from_address[mail.from.first.downcase]
      # Save the default email settings.
      original_smtp_settings = self.class.smtp_settings
      begin
        # Apply the from address specific settings.
        self.class.smtp_settings = ActionMailer::Base.smtp_settings_by_from_address[mail.from.first.downcase]
        # Send the message.
        deliver_without_intelligent_smtp! mail
      ensure  
        # Return smtp_settings to original settings.
        self.class.smtp_settings = original_smtp_settings
      end
    else  
      deliver_without_intelligent_smtp! mail
    end 
  end
  alias_method :deliver_without_intelligent_smtp!, :deliver!
  alias_method :deliver!, :deliver_with_intelligent_smtp!
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
jwulff-actionmailer_multiple_smtp-0.0.0 lib/actionmailer_multiple_smtp.rb
jwulff-actionmailer_multiple_smtp-1.0.0 lib/actionmailer_multiple_smtp.rb
jwulff-actionmailer_multiple_smtp-1.0.1 lib/actionmailer_multiple_smtp.rb