Rya*_*ner 5 ruby ruby-on-rails actionmailer
我目前遇到了从ActionMailer发送电子邮件的问题.我正在尝试将自定义标题附加到从我的系统发送的每封电子邮件中,无论它来自哪个邮件程序.标题包含有关哪个人正在接收电子邮件的信息,因此无法在邮件程序的默认设置中进行设置,但我希望避免在每个邮件中设置此标头.
这是我目前设置的内容:
candidates.each do |c|
mail = mailer_class.send(action.to_sym, c, params)
recip = email_recipients.create!(:contact => c, :subject => mail.subject)
mail.headers['X-SMTPAPI'] = {:unique_args => {:email_recipient_id => recip.id, :database => Apartment::Database.current_database },
:category => "#{mailer}-#{action}" }.to_json
mail.deliver
end
Run Code Online (Sandbox Code Playgroud)
问题是,在a的headers哈希上设置一个键Mail::Message似乎没有改变任何东西.
我确实找到了一种通过手动设置header属性来设置标头的方法,如下所示:
m.header = m.header.to_s + "\nBlah: Blah"
Run Code Online (Sandbox Code Playgroud)
但说实话,这感觉有点hacky.有谁知道一个更好的模式来实现这一目标?
您可以创建一个使用默认标头扩展 ActionMailer::Base 的类
在初始化目录中添加一个加载的文件,如下所示
mailer_defaults.rb
class ActionMailer::Base
def defaults
# header HERE
end
end
Run Code Online (Sandbox Code Playgroud)
这应该会带你走向正确的方向