2012-03-02 3 views
5

현재 ActionMailer에서 보내는 전자 메일과 관련된 문제가 있습니다. 내 시스템에서 보낸 모든 전자 메일에 사용자 지정 헤더를 추가하려고합니다.이 전자 메일은 어떤 메일러에서 왔는지에 관계없이 전달됩니다. 헤더에는 전자 메일을받는 사람에 대한 정보가 들어 있으므로 메일러의 기본값에서 설정할 수는 없지만 개별 메일러마다이 헤더를 설정하지 않아도됩니다.ActionMailer에서 반환 한 Mail :: Message의 헤더 수정

는 여기에 현재 설정 한 내용은 다음과 같습니다

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" 

하지만 솔직히 말해서, 이것은 조금 해키 느낌 :

내가 수동과 같이, 헤더 속성을 설정하여 헤더를 설정하는 방법을 찾아야했다. 누구든지 이것을 달성하기위한 더 좋은 패턴을 알고 있습니까? 당신이 이니셜

디렉토리에 추가 보인다로드되는 파일을 기본 헤더 ActionMailer :: Base를 확장하는 클래스를 만들 수 있습니다

+0

smtp 헤더를 통해 json을 보내시겠습니까? – farnoy

+0

예. 약간 이상하지만, 그것은 내가 사용하고있는 공급자에 의해 지시됩니다. –

답변

0

mailer_defaults.rb

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

올바른 방향으로 이동해야합니다.

관련 문제