2011-03-27 15 views
5

¿Cómo puedo hacer que por lo ActionMailer siempre muestra los archivos adjuntos en la parte inferior del mensaje: HTML, TXT, archivos adjuntos ....Rails: ActionMailer a veces muestra archivos adjuntos antes del contenido del correo electrónico?

El problema es que el archivo adjunto aquí es un archivo de texto:

----==_mimepart_4d8f976d6359a_4f0d15a519e35138763f4 
Date: Sun, 27 Mar 2011 13:00:45 -0700 
Mime-Version: 1.0 
Content-Type: text/plain; 
charset=UTF-8 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; 
filename=x00_129999.olk14message 
Content-ID: <[email protected]> 

gracias

+0

¿Se puede publicar el código desde el interior de su correo? Sospecho que sé cuál podría ser el problema. – Tass

+0

@AnApprentice Tengo el mismo problema. ¿Pudiste resolverlo? – Wukerplank

Respuesta

4

Tuve el mismo problema, y ​​en mi caso la solución fue cambiar las líneas de archivo adjunto y correo. Primero adjunte, luego llame al correo.

Rails 3

MAL

def pdf_email(email, subject, pdfname, pdfpath) 
    mail(:to => email, :subject => subject) 
    attachments[pdfname] = File.read(pdfpath) 
end 

BUENA

def pdf_email(email, subject, pdfname, pdfpath) 
    attachments[pdfname] = File.read(pdfpath) 
    mail(:to => email, :subject => subject) 
end 
+0

no. no resuelve el problema "ordenar" – choonkeat

0

esto es raíl codificado 2.3 (podría ser ligeramente diferente en rails3)

que acaba de pasar parte de texto antes de la fijación

recipients [email protected] 
from  [email protected] 
subject "some subject" 
content_type "multipart/mixed" 

part "text/plain" do |p| 
    p.body = render_message 'my_message' #this is template file 
end 

attachment "application/octet-stream" do |a| 
    a.body = File.read("some_file.jpg") 
    a.filename = 'name.jpg' 
end 
5

Sé que ya hay una respuesta aceptada, pero cambiar el orden de attachments[] y mail() no lo hice resuélvelo por mí. Lo que es diferente acerca de mi situación es que estaba tratando de adjuntar un archivo adjunto de texto (.txt)

Lo que funciona para mí es establecer los valores predeterminados content_type y parts_order para el programa de correo.

MyMailer < ActionMailer::Base 

    default :from => "Awesome App <[email protected]>", 
      :content_type => 'multipart/alternative', 
      :parts_order => [ "text/html", "text/enriched", "text/plain", "application/pdf" ] 

    def pdf_email(email, subject, pdfname, pdfpath) 
     attachments[pdfname] = File.read(pdfpath) 
     mail(:to => email, :subject => subject) 
    end 

    def txt_email(email, subject, filename, filebody) 
     attachments[filename] = filebody 
     mail(:to => email, :subject => subject) 
    end 
end 

Si usted está tratando de enviar un correo electrónico en Rails 3 con un archivo de texto (.txt), tratando de añadir :content_type y parts_order a sus valores por defecto para que el archivo de texto no aparece encima del mensaje a su email .

+1

'parts_order' trabajado. aunque no necesariamente puesto en la sección 'default'. puede ser argumento para el 'correo individual (...)' – choonkeat

Cuestiones relacionadas