Как создать пользовательские заголовки электронной почты

Я пытаюсь создать собственный заголовок электронной почты для использования sendGrid api.

Вот что я делаю - но его не работает:

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

Любая помощь была оценена.

Спасибо, Адам

Ответы

Ответ 1

вы можете использовать метод #headers ActionMailer, я отредактировал ваш пример, чтобы показать, как:

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

Кроме того, вы можете передать хэш в качестве аргумента (для метода #headers):

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

Я надеюсь, что это может вам помочь, и если вы не всегда можете проверить направляющие рельсов: http://edgeguides.rubyonrails.org/action_mailer_basics.html.

Ответ 2

Я использую код ниже и отлично работает, просто преобразуйте хэш в json с помощью to_json

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

Ответ 3

Метод заголовков требует действительного JSON. Поэтому для решения Ricardo требуется эта строка:

заголовки ['X-SMTPAPI'] = '{ "category": "Drip Email" }'

Ответ 4

Чтобы использовать группы отписки в группе групп подавления в sendgrid, я использовал следующий синтаксис, который работал.

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