简体   繁体   English

在操作邮件程序栏上更改ActionMailer SMTP设置5

[英]Change the ActionMailer SMTP settings on action mailer rails 5

I want to change my ActionMailer SMTP settings on a ActionMailer class, however I'm not able to change it, this is what I've tried. 我想在ActionMailer类上更改我的ActionMailer SMTP设置,但是我无法更改它,这是我尝试过的方法。

class MyMailer < ActionMailer::Base
  def sample
    deliver_with(:mailgun)
  end

  def deliver_with(server = :transactional)
     Rails.application.config.action_mailer.smtp_settings = Rails.application.secrets[:smtp][server]
     ActionMailer::Base.smtp_settings = Rails.application.secrets[:smtp][server]
  end

This is how is done: 这是如何完成的:

class ApplicationMailer < ActionMailer::Base
  layout 'mailer'

  after_action :config_smtp

  def sample
    deliver_with(:mailgun)
  end

   private

   def config_smtp 
      mail.delivery_method.settings.merge! @smtp_settings if @smtp_settings
    end

    def deliver_with(server = :transactional)
      server = server.to_s
      unless Rails.application.secrets[:smtp].keys.include? server
        server = "mandrill"
      end

      @smtp_settings = Rails.application.secrets[:smtp][server]
    end

And on your secrets: 而关于您的秘密:

  smtp:
    mandrill:
      :address: 'smtp.mandrillapp.com'
      :port: 587
      :user_name: '123'
      :password: ''
      :authentication: 'plain'
      :enable_starttls_auto: true

    mailgun:
      :address: 'smtp.mailgun.org'
      :port: 587
      :user_name: '123@em.123.com'
      :password: ''
      :authentication: 'plain'
      :enable_starttls_auto: true

我认为您需要在环境文件(development.rb,production.rb,test.rb)中而不是在类定义中更改这些设置。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM