Sugerencias

Envío de emails con archivos adjuntos en Rails con ActionMailer

Publicado el 09 Mar 2010

Hablo de
railsactionmailer

Sólo a modo de recordatorio y para que quede constancia en algun lado para el futuro, voy a explicar la manera super simple que he usado para hacer el típico formulario de contacto (en mi caso para ofertas de trabajo) en el que se pueden adjuntar varios archivos (imágenes, pdf's, etc) y no queremos tener un modelo que gestione este tipo de recursos, ya sea porque no tiene la suficiente importancia en nuestra aplicación o porque preferimos recibir solo toda esa informacion por email.

Para gestionar los attachments con actionmailer, es tan simple como usar el método 'attachment' incluido en la api de rails, dentro de nuestro método en la clase 'ActionMailer::Base':

La manera en lo que yo lo he usado ha sido la siguiente:

    attachs.each do |file|
      attachment "application/octet-stream" do |attachment|
          attachment.body = file.read
          attachment.filename = file.original_filename
      end unless file.blank?
    end

dónde simplemente recibimos un array, 'attachs', que contiene los ficheros temporales recibidos en nuestro controller, e iteramos sobre ellos, llamando al método 'attachment', pasandole el content_type de 'application/octet-stream' (aqui podemos pasarle el content_type exacto si lo sabemos, pero como en mi caso dejo subir cualquier cosa, pongo este que es el más genérico) y un bloque donde leemos con un 'read' el archivo temporal recibido y le asignamos el nombre de fichero original.

Tan simple como eso, así la próxima vez que lo tenga que usar se dónde buscarlo facilmente ;)

Deja tu comentario: