【问题标题】:How to set a default header?如何设置默认标题?
【发布时间】:2019-10-01 18:43:47
【问题描述】:

我有很多邮件 (*Mailer)。一切都在 SMTP 上运行。

我了解如何为特定的*Mailer 方法设置标题。但是如何全局设置标题呢?也就是说,我需要我的应用程序发送的所有信件都有我的标题。这样就不会与个人邮件设置冲突。

我试图在文档(和谷歌)中找到,但没有找到任何东西。

【问题讨论】:

    标签: ruby-on-rails actionmailer ruby-on-rails-6


    【解决方案1】:

    你可以这样做。

    class ApplicationMailer < ActionMailer::Base
     default from: "email@company.com", "HEADER_KEY" => "VALUE"
    end
    

    【讨论】:

      【解决方案2】:

      您所有的邮件程序都应该继承自 ApplicationMailer,ApplicationMailer 本身继承自 ActionMailer::Base。

      在 ApplicationMailer 中,您可以定义默认的 smtp 标头、默认布局等。 这是我的 application_mailer.rb,给你一些想法,你可以包括什么:

      #application_mailer.rb
      class ApplicationMailer < ActionMailer::Base
        default from: "Site Admin<#{NO_REPLY_EMAIL}>"
        layout 'mailer'
      
        def mail
          super(options)
        end
      
        private
        def options
          {:'List-Unsubscribe-Post' => :'List-Unsubscribe=One-Click',
           :'List-Unsubscribe' => unsubscribe_url,
           :subject => t('.subject', org_name: ORGANIZATION_NAME, app_name: APPLICATION_NAME),
           :to => "#{@recipient.email}",
           :date => Time.now }
        end
      
        def unsubscribe_url
          params = { :locale => I18n.locale,
                     :user_id => @recipient.id,
                     :unsubscribe_code => @recipient.refresh_unsubscribe_code,
                     :protocol => :https }
          @unsubscribe_url = admin_unsubscribe_url( params )
        end
      
      

      【讨论】:

      • 在线错误def mail - ArgumentError (wrong number of arguments (given 1, expected 0))
      • 使用这个可能会更好:config.action_mailer.default_options?
      • 是的,我没有指出 Rails 版本……在 Rails 6 中你可以传递选项,所以它不会因 ArgumentError 而失败。如果 config.action_mailer.default_options 为您提供所需的所有可配置性,那就太好了。我需要更多。
      【解决方案3】:

      对于 Rails 5:

      class ApplicationMailer < ActionMailer::Base
        layout 'mailer'
      
        def mail(args)
          headers('X-MyCorp-customer' => @customer&.name)
          headers('X-MyCorp-env' => Rails.env)
          headers('X-MyCorp-app' => 'XRay Insights')
          super(args)
        end
      end
      

      【讨论】:

        猜你喜欢
        • 2013-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多