2012-03-02 8 views
5

現在、ActionMailerから電子メールを送信する際に問題が発生しています。私は自分のシステムから送られたすべての電子メールにカスタムヘッダーを追加しようとしています。ヘッダーには、どのユーザーが電子メールを受信して​​いるかに関する情報が含まれているため、メーラーのデフォルトでは設定できませんが、個々のメーラーでこのヘッダーを設定する必要はありません。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 

問題があり、何も変更していないようだMail::Messageheadersハッシュのキーを設定します。

私はそうのように、手動でヘッダープロパティを設定することで、ヘッダを設定する方法見つけた:

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

しかし、正直に言うと、これは少しハックを感じています。誰かがこれを達成するためのより良いパターンを知っていますか?

+0

smtpヘッダーでjsonを送信していますか? – farnoy

+0

うん。ちょっと変だけど、それは私が使用しているプロバイダによって決められている。 –

答えて

0

あなたは

mailer_defaults.rb

のように見えるロードされるファイルを追加 初期化子ディレクトリにデフォルトのヘッダーと

をactionmailerのを拡張するクラス::ベースを作成することができます

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

これは正しい方向に進みます

関連する問題