Class: ActionMailer::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/actionmailer_multiple_smtp.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.smtp_settings_by_from_addressObject



5
6
7
# File 'lib/actionmailer_multiple_smtp.rb', line 5

def smtp_settings_by_from_address
  @smtp_settings_by_from_address ||= {}
end

Instance Method Details

#deliver_with_intelligent_smtp!(mail = @mail) ⇒ Object Also known as: deliver!



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/actionmailer_multiple_smtp.rb', line 10

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