2012-03-02 12 views
5

Actualmente me encuentro con un problema al enviar correos electrónicos desde ActionMailer. Intento añadir un encabezado personalizado a cada correo electrónico enviado desde mi sistema, independientemente de qué correo electrónico provenga. El encabezado contiene información sobre qué persona está recibiendo el correo electrónico, por lo que no se puede configurar en los valores predeterminados del programa de correo, pero me gustaría evitar la necesidad de configurar este encabezado en cada correo individual.Modificar encabezados de un Correo :: Mensaje devuelto por ActionMailer

Esto es lo que he establecido actualmente:

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 

El problema es, el establecimiento de una tecla en el headers hash de un Mail::Message no parece cambiar nada.

Lo que encontrar una manera de establecer una cabecera ajustando manualmente la propiedad de la cabecera, así:

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

Pero para ser honesto, esto se siente un poco hacky. ¿Alguien sabe de un mejor patrón para lograr esto?

+0

¿Está enviando json por encabezados smtp? – farnoy

+0

Sí. Un poco raro, pero eso es dictado por un proveedor que estoy usando. –

Respuesta

0

puede crear una clase que amplíe la ActionMailer :: base con los encabezados predeterminados

en los inicializadores directorio de añadir un archivo que se carga que se parece a

mailer_defaults.rb

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

Esto debe asumir las direcciones correctas

Cuestiones relacionadas