2010-12-19 26 views
9

Tengo un problema con el envío de un mensaje de correo electrónico con datos adjuntos mediante ActionMailer.Nombre de archivo inválido en correo electrónico (ActionMailer)

Lo que pasa es que mi archivo adjunto tiene 'noname' nombre de archivo cuando leo mi mensaje en gmail.

función notificador cabeceras

class Notifier < ActionMailer::Base 
    def send_message 
    attachments["text.txt"] = {:content => "hello"} 
    mail(:to => "[email protected]", :subject => 'test') 
    end 
end 

Mensaje:

 
Date: Sun, 19 Dec 2010 23:18:00 +0100 
Mime-Version: 1.0 
Content-Type: text/plain; 
charset=UTF-8; 
filename=text.txt 
Content-Transfer-Encoding: 7bit 
Content-Disposition: attachment; 
filename=text.txt 
Content-ID: ... 

¿Cómo puedo enviar un mensaje con el nombre de archivo correcto?

Gracias

Respuesta

11

asegurarse de que tiene sus puntos de vista.

hacer que los archivos correctos en app/views/[class_name]/[method_name]
Crear un archivo app/views/notifier/send_message.erb y app/views/notifier/send_message.html.erb archivo.

+0

En realidad, puede nombrar la vista como 'send_message.text.erb' para hacerlo más claro. –

+0

¿Por qué tener dos archivos separados que hacen lo mismo? – Trip

0

Creo que cuando no se define un cuerpo para el correo electrónico, las partes se configuración incorrecta, y terminas ganando un archivo masivo "noname" que incluye los encabezados de las piezas para todos los archivos adjuntos.

Utilizando este código gestor de correo:

class Mailer < ActionMailer::Base 
    def generic(args) 
    args.reverse_merge! to: '[email protected]', from: '[email protected]' 
    add_attachments! args.delete(:attachments) 
    mail(args) 
    end 

    protected 
    def add_attachments!(*files) 
    files.flatten.compact.each do |file| 
     attachments[File.basename(file)] = File.read(file) 
    end 
    end 
end 

me sale un único archivo noname cuando hago esto:

Mailer.generic(attachments: [File.open('/path/to/file1.txt'), File.open('/path/to/file2.csv')]).deliver 

consigo 2 archivos individuales, con nombres correctos, cuando hago esto:

Mailer.generic(body: '', attachments: [File.open('/path/to/file1.txt'), File.open('/path/to/file2.csv')]).deliver 
Cuestiones relacionadas