如何创建自定义电子邮件标头

时间:2011-08-10 14:10:52

标签: ruby-on-rails sendgrid

我正在尝试创建自定义电子邮件标头以使用SendGrid API。

这就是我正在做的事 - 但它不起作用:

class Mailman < ActionMailer::Base
  default :from => "info@sample.com"

  def send_message(name, email, message)
    @name = name
    @email = email
    @message = message

    mail(:to => 'info@sample.com',
     :from => email,
     :subject => "Message from the site",
     :headers['X-SMTPAPI'] => "category: Drip Email"
    )
  end

end

任何帮助表示感谢。

谢谢, 亚当

4 个答案:

答案 0 :(得分:55)

你可以使用ActionMailer的#headers方法,我编辑了你的例子来说明:

class Mailman < ActionMailer::Base
  default :from => "info@sample.com"

  def send_message(name, email, message)
    @name = name
    @email = email
    @message = message

    headers['X-SMTPAPI'] = '{"category": "Drip Email"}'

    mail(:to => 'info@sample.com',
     :from => email,
     :subject => "Message from the site"
    )
  end

end

或者,您也可以将哈希作为参数传递给方法#headers:

headers {"SPECIFIC-HEADER-1" => "value", "ANOTHER-HEADER" => "and so..."}

我希望这对您有所帮助,如果不是,您总是可以查看导轨指南:http://edgeguides.rubyonrails.org/action_mailer_basics.html

答案 1 :(得分:5)

我正在使用下面的代码并且工作正常,只需使用to_json

将哈希转换为json
headers['X-SMTPAPI'] = { 
  category: "Weekly Newsletter",
  unique_args: { user_id: user.id } 
}.to_json

答案 2 :(得分:2)

headers方法需要有效的JSON。所以里卡多的解决方案需要这条线:

标题['X-SMTPAPI'] ='{“类别”:“滴水电子邮件”}'

答案 3 :(得分:2)

要在sendgrid中使用抑制组功能中的取消订阅组,我使用了以下语法。

headers['X-SMTPAPI'] = '{"asm_group_id": 1111}'