[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é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