Rails ActionMailer with multiple SMTP servers

前端 未结 11 1108
一整个雨季
一整个雨季 2020-12-13 06:19

I have a need to use two different smtp servers in a Rails application. It appears that the way ActionMailer is constructed, it is not possible to have different smtp_settin

11条回答
  •  心在旅途
    2020-12-13 07:17

    Here's another solution, which, while it looks ridiculous, I think is a little bit cleaner and easier to reuse in different AM::Base classes:

        module FTTUtilities
          module ActionMailer
            module ClassMethods
              def smtp_settings
                dict = YAML.load_file(RAILS_ROOT + "/config/custom_mailers.yml")[self.name.underscore]
                @custom_smtp_settings ||= HashWithIndifferentAccess.new(dict)
              end
            end
    
            module InstanceMethods
              def smtp_settings
                self.class.smtp_settings
              end
            end
          end
        end
    

    example Mailer:

        class CustomMailer < ActionMailer::Base
            extend FTTUtilites::ActionMailer::ClassMethods
            include FTTUtilites::ActionMailer::InstanceMethods
        end
    

提交回复
热议问题