【发布时间】:2019-10-01 18:43:47
【问题描述】:
我有很多邮件 (*Mailer)。一切都在 SMTP 上运行。
我了解如何为特定的*Mailer 方法设置标题。但是如何全局设置标题呢?也就是说,我需要我的应用程序发送的所有信件都有我的标题。这样就不会与个人邮件设置冲突。
我试图在文档(和谷歌)中找到,但没有找到任何东西。
【问题讨论】:
标签: ruby-on-rails actionmailer ruby-on-rails-6
我有很多邮件 (*Mailer)。一切都在 SMTP 上运行。
我了解如何为特定的*Mailer 方法设置标题。但是如何全局设置标题呢?也就是说,我需要我的应用程序发送的所有信件都有我的标题。这样就不会与个人邮件设置冲突。
我试图在文档(和谷歌)中找到,但没有找到任何东西。
【问题讨论】:
标签: ruby-on-rails actionmailer ruby-on-rails-6
你可以这样做。
class ApplicationMailer < ActionMailer::Base
default from: "email@company.com", "HEADER_KEY" => "VALUE"
end
【讨论】:
您所有的邮件程序都应该继承自 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 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
【讨论】: