2012-03-02 8 views
5

Występuje obecnie problem z wysyłaniem wiadomości e-mail z ActionMailer. Próbuję dołączyć niestandardowy nagłówek do każdej wiadomości e-mail wysłanej z mojego systemu, niezależnie od tego, z jakiego programu pochodzi. Nagłówek zawiera informacje o tym, która osoba otrzymuje wiadomość e-mail, więc nie można jej ustawić w domyślnych ustawieniach programu pocztowego, ale chciałbym uniknąć konieczności konfigurowania tego nagłówka w każdym pojedynczym programie pocztowym.Modyfikowanie nagłówków wiadomości e-mail :: Wiadomość zwrócona przez ActionMailer

Oto co mam założyć obecnie:

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 

Problemem jest ustawienie klucza na headers hash z Mail::Message nie wydaje się, aby cokolwiek zmienić.

znalazłem sposób ustawić nagłówek poprzez ręczne ustawienie właściwości nagłówka, tak:

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

Ale szczerze mówiąc, to czuje się trochę hacky. Czy ktoś wie o lepszym wzorcu, aby to osiągnąć?

+0

Czy wysyłasz json przez nagłówki smtp? – farnoy

+0

Tak. Trochę dziwne, ale to dyktowane przez dostawcę, którego używam. –

Odpowiedz

0

można utworzyć klasę, która rozszerza ActionMailer :: Base z nagłówkami domyślnych

w inicjalizatorów katalog dodać plik, który jest ładowany, który wygląda jak

mailer_defaults.rb

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

To powinno Cię skierować w odpowiednią stronę: