How to create custom email headers

Northband picture Northband · Aug 10, 2011 · Viewed 11.9k times · Source

I'm trying to create a custom email header to use the SendGrid api.

Here's what I'm doing - but its not working:

class Mailman < ActionMailer::Base
  default :from => "[email protected]"

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

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

end

Any help appreciated.

Thanks, Adam

Answer

Ricardo Valeriano picture Ricardo Valeriano · Aug 10, 2011

You can use the #headers method of ActionMailer, I've edited your example to show how:

class Mailman < ActionMailer::Base
  default :from => "[email protected]"

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

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

    mail(
     :to => '[email protected]',
     :from => email,
     :subject => "Message from the site"
    )
  end

end

Alternatively, you can pass a hash as an argument (to the method #headers) too:

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

I hope this can help you, and if not you always can check the rails guides: http://edgeguides.rubyonrails.org/action_mailer_basics.html.