[Ror-es] action mailer attachment

Miguel Angel Calleja Lázaro mangelcl at yahoo.es
Tue Sep 25 11:48:08 GMT 2007


Miguel Angel Calleja Lázaro escribió:

>Miguel Angel Calleja Lázaro escribió:
>
>  
>
>>Necesito enviar un email con un attachment, alguien me podría aconsejar de cómo puedo añadir el fichero y que se envíe por correo?
>>Hay que subir primero el fichero al servidor, leerlo y luego borrarlo?
>>
>>class ApplicationMailer < ActionMailer::Base
>>   # attachments
>>   def signup_notification(recipient)
>>     recipients      recipient.email_address_with_name
>>     subject         "New account information"
>>     from            "system at example.com"
>>
>>     attachment :content_type => "image/jpeg",
>>       :body => File.read("an-image.jpg")
>>
>>     attachment "application/pdf" do |a|
>>       a.body = generate_your_pdf_here()
>>     end
>>   end
>> end
>>
>>Muchas gracias
>>
>>_______________________________________________
>>Ror-es mailing list
>>Ror-es at lists.simplelogica.net
>>http://lists.simplelogica.net/mailman/listinfo/ror-es
>>
>> 
>>
>>    
>>
>Detallo lo que he hecho, en mi controlador recojo lo que me llega del 
>formulario, subo el fichero al servidor y llamo a mi TrabajaMailer:
> def enviar_trabaja
>                size=params['file_data'].size
>                tipo=params[:file_data].content_type
>                nombre=params[:file_data].original_filename
>                contenido=params[:file_data].read
>                dir="/........../public/"
>                if size>0
>                        dest=File.join(dir,sanitize_filename(nombre))
>                        File.open(dest.untaint, 'wb') { |f| f << contenido }
>                #Borramos el fichero temporal si fue creado
>                        local_temp_file=params[:file_data].local_path()
>                        File.unlink(local_temp_file) if local_temp_file
>                end
>
>            contact=params[:trabaja] #Lo que llega del formulario
>            email=TrabajaMailer.create_sent(contact,tipo,nombre,dest)
>            email.set_content_type("text/html")
>                if  TrabajaMailer.deliver(email)
>                flash[:notice]="El formulario ha sido enviado con 
>éxito, nos pondremos en contacto con usted en el menor tiempo posible."
>                else
>                flash[:notice]="El formulario no se ha podido enviar"
>                end
>                @pagina=Pagina.find(15)
>            redirect_to :action=>'ver', :permalink=>@pagina.permalink
>        end
>
>Y mi TrabajaMailer, donde recojo el content_type, leo el fichero y el 
>nombre, aparte me tiene que sacar los datos en la vista:
>
> def sent(contacto,tipo,nombre,dest)
>    @subject    = 'Trabaja con nosotros '
>    @body["contacto"] = contacto
>    @recipients = 'email at email.es'
>    @from       = 'no-reply at xxx.com'
>    @sent_on    = Time.now
>    @headers    = {}
>                attachment :content_type => tipo,
>                        :body => File.read(dest),
>                        :filename => nombre
>  end
>
>Y mi  vista, donde muestro los datos:
><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
><head>
><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
></head>
><body>
>Nombre y apellidos: <%= @contacto[:apellidos]%>, 
><%=@contacto[:nombre]%><br/>
>Departamento: <%= @contacto[:departamento]%><br/>
>Tel&eacute;fono: <%= @contacto[:telefono] %>
>Email: <%= @contacto[:email] %> <br/>
>Comentarios: <%= @contacto[:comentarios] %>
></body>
>
>
>Se sube el fichero al servidor, me envía el mail pero no me llega 
>correctamente, no me llega la vista ahora y al correo me viene algo 
>horroroso de ver:
>--mimepart_46f8eb039bf64_6222..fdbfa33a4172e Content-Type: image/jpeg; 
>name=alimentaciondetail.jpg Content-Transfer-Encoding: Base64 
>Content-Disposition: attachment; filename=alimentaciondetail.jpg 
>/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5j 
>LiBWMS4wMQD/2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZ 
>HBsgJC4nICIrIhscKDYoKy8xMzQzHyY4PDgyPC4yMzEBCAkJDAoMFw0NFzEh 
>.................. --mimepart_46f8eb039bf64_6222..fdbfa33a4172e--
>
>Adjunto el log:
>
>Processing PaginasController#enviar_trabaja (for xx.xx.xx.xx at 
>2007-09-25 07:03:31) [POST]
>  Session ID: 8e9752718bda6cd6c403095f40fe7de9
>  Parameters: {"action"=>"enviar_trabaja", 
>"file_data"=>#<File:/tmp/CGI25122.6>, "controller"=>"paginas", 
>"trabaja"=>{"comentarios"=>"", "nombre"=>"h", 
>"departamento"=>"Departamento 3", "telefono"=>"a", "email"=>"a at a.es", 
>"apellidos"=>"a"}}
>  ^[[4;36;1mPagina Load (0.000265)^[[0m   ^[[0;1mSELECT * FROM paginas 
>WHERE (padre_id=21) ORDER BY orden ^[[0m
>  ^[[4;35;1mPagina Columns (0.000284)^[[0m   ^[[0mSHOW FIELDS FROM 
>paginas^[[0m
>  ^[[4;36;1mPagina Load (0.000205)^[[0m   ^[[0;1mSELECT * FROM paginas 
>WHERE (padre_id=21) ORDER BY orden ^[[0m
>  ^[[4;35;1mPagina Load (0.000236)^[[0m   ^[[0mSELECT * FROM paginas 
>WHERE (padre_id=1) ORDER BY orden ^[[0m
>  ^[[4;36;1mPagina Load (0.000226)^[[0m   ^[[0;1mSELECT * FROM paginas 
>WHERE (padre_id=2) ORDER BY orden ^[[0m
>  ^[[4;35;1mPagina Load (0.000176)^[[0m   ^[[0mSELECT * FROM paginas 
>WHERE (padre_id=3) ORDER BY orden ^[[0m
>  ^[[4;36;1mPagina Load (0.000198)^[[0m   ^[[0;1mSELECT * FROM paginas 
>WHERE (padre_id=0) ORDER BY id ^[[0m
>Sent mail:
> Date: Tue, 25 Sep 2007 07:03:31 -0400^M
>From: no-reply at somosierra.com^M
>To: mangel at sonoratec.biz^M
>Subject: Trabaja con nosotros desde Somosierra.com^M
>Mime-Version: 1.0^M
>Content-Type: text/html; 
>boundary=mimepart_46f8eb0399939_6222..fdbfa33a4158b^M
>^M
>^M
>--mimepart_46f8eb0399939_6222..fdbfa33a4158b^M
>Content-Type: image/jpeg; name=alimentaciondetail.jpg^M
>Content-Transfer-Encoding: Base64^M
>Content-Disposition: attachment; filename=alimentaciondetail.jpg^M
>^M
>/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5j
>LiBWMS4wMQD/2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZ
>HBsgJC4nICIrIhscKDYoKy8xMzQzHyY4PDgyPC4yMzEBCAkJDAoMFw0NFzEh
>HCExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
>.....
>/9k=
>--mimepart_46f8eb0399939_6222..fdbfa33a4158b--^M
>
>
>Algo estoy haciendo mal, el mail no me llega correctamente con el 
>attachment, alguien puede ayudarme? gracias
>_______________________________________________
>Ror-es mailing list
>Ror-es at lists.simplelogica.net
>http://lists.simplelogica.net/mailman/listinfo/ror-es
>
>  
>
Lo he solucionado, si a alguien le interesa he añadido en mi controlador 
para que el content sea multipart:
email.set_content_type("multipart","mixed")

y en TrabajaMailer, he añadido:
part :content_type =>"text/html",
                :body=>render_message("sent",:contacto=>contacto)




More information about the Ror-es mailing list