I have a need to send mail from more than 1 SMTP account in Rails and I stumbled upon this post
http://broadcast.oreilly.com/2009/03/using-multiple-smtp-accounts-w.html The Author wasn't thrilled with his solution and I'm hoping this forum can come up with something a little cleaner. I took a different approach (that I'm not in love with either). I created and email config class that sets the smtp settings for a specific configuration, does a yield call (to deliver the mail) and then replaces the base settings. This ensures that code that is happy with the default settings will use them without needing a code change. ====== email_config.rb ============ class EmailConfig @@the_map = {} def self.set_config(name, mapping) @@the_map[:base] = ActionMailer::Base.smtp_settings if @@the_map [:base].blank? @@the_map[name] = mapping end def self.run_with_config(name) ActionMailer::Base.smtp_settings = @@the_map[name] if @@the_map [name] begin RAILS_DEFAULT_LOGGER.debug("EMAIL send as # {ActionMailer::Base.smtp_settings[:user_name]}") yield ensure ActionMailer::Base.smtp_settings = @@the_map[:base] if @@the_map [:base] RAILS_DEFAULT_LOGGER.debug("EMAIL sent now configured for # {ActionMailer::Base.smtp_settings[:user_name]}") end end end Now in an after_initialize block in production.rb I can set the following EmailConfig.set_config(:exception, { :address => 'smtp.gmail.com', :enable_starttls_auto => 'true', :port => 587, :domain => 'mydomain.com', :authentication => :login, :user_name => 'err...@mydomain.com', :password => 'passwd' }) In my case I wanted emails from the exception notification plugin to goto a different email address. I needed to modify the deliver_exception_notification call to the following EmailConfig.run_with_config(:exception){ ExceptionNotifier.deliver_exception_notification(exception, self, request, data)} It works fine but I'm wondering if there is a cleaner way to do this. Thoughts? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---