Изменение заголовков Mail :: Message, возвращаемых ActionMailer - PullRequest
5 голосов
/ 02 марта 2012

У меня сейчас проблема с отправкой электронных писем из 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

Проблема в том, что установка ключа для хеша headers для Mail::Message, похоже, ничего не меняет.

Я нашел способ установить заголовок, установив свойство заголовка вручную, например, так:

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

Но, если честно, это выглядит немного странно.Кто-нибудь знает лучший шаблон для достижения этой цели?

1 Ответ

0 голосов
/ 05 сентября 2013

вы можете создать класс, который расширяет ActionMailer :: Base заголовками по умолчанию

в каталоге initializer и добавляет загружаемый файл, который выглядит как

mailer_defaults.rb

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

Это должно привести вас в правильном направлении

...