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

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

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

class Mailman  "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 

任何帮助赞赏。

谢谢,亚当

你可以使用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 。

我使用下面的代码并且工作正常,只需使用to_json将哈希转换为json

 headers['X-SMTPAPI'] = { category: "Weekly Newsletter", unique_args: { user_id: user.id } }.to_json 

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

headers [‘X-SMTPAPI’] ='{“category”:“Drip Email”}’

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

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