Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 修改ActionMailer返回的邮件::消息的标题_Ruby On Rails_Ruby_Actionmailer - Fatal编程技术网

Ruby on rails 修改ActionMailer返回的邮件::消息的标题

Ruby on rails 修改ActionMailer返回的邮件::消息的标题,ruby-on-rails,ruby,actionmailer,Ruby On Rails,Ruby,Actionmailer,我目前在从ActionMailer发送电子邮件方面遇到了问题。我正试图在从我的系统发送的每封电子邮件中附加一个自定义标题,而不管它来自哪个邮箱。邮件头包含有关接收电子邮件的人的信息,因此无法在邮件程序的默认设置中设置,但我希望避免在每个邮件程序中设置此邮件头 以下是我目前设置的内容: candidates.each do |c| mail = mailer_class.send(action.to_sym, c, params) recip = email_recipient

我目前在从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
问题是,在
Mail::Message
headers
散列上设置一个键似乎不会改变任何事情

我确实找到了通过手动设置header属性来设置header的方法,如下所示:

m.header = m.header.to_s + "\nBlah: Blah"

但老实说,这感觉有点不舒服。有人知道更好的模式来实现这一点吗?

您可以创建一个类,用默认的头扩展ActionMailer::Base

初始值设定项目录中添加一个加载的文件

mailer\u默认值.rb

  class ActionMailer::Base
    def defaults
      # header HERE 
    end
 end

这将引导您走向正确的方向

您是否通过smtp头发送json?是的。有点奇怪,但这是由我使用的提供商决定的。