2010-07-07 22 views
13

Necesito enviar un correo electrónico con un archivo adjunto a través de Ruby.Enviar correo electrónico con archivo adjunto en Ruby

He estado buscando pero no he encontrado ningún script simple para hacer esto.

Lo más cerca que he encontrado es ActionMailer, pero parece que se requieren muchos otros scripts para ejecutar. (NOTA: no estoy usando Ruby on Rails)

Respuesta

17

¿Has echado un vistazo Mail? Eso es en lo que se basa la nueva API de ActionMailer en Rails 3.

"El correo es una biblioteca de Internet para Ruby que está diseñada para manejar la generación, el análisis y el envío de correos electrónicos de una manera sencilla y fluida".

Aquí viene un ejemplo rápido de los documentos:

require 'mail' 

@mail = Mail.new 
file_data = File.read('path/to/myfile.pdf') 
@mail.attachments['myfile.pdf'] = { :mime_type => 'application/x-pdf', 
            :content => file_data } 

actualización: O aún más simple:

@mail = Mail.new 
@mail.add_file("/path/to/file.jpg") 
+0

Los chicos dicen claramente que no está usando Rails – sergiovilar

+2

@sergiovilar: Mail es una biblioteca de Ruby pura. No depende de Rails. Por lo tanto, es una respuesta válida (incluso hoy, 6 años después de que se publicó la respuesta). –

+0

Recibo este error: 'método indefinido '[]' para nil: NilClass' – mpora

1

envío de correo electrónico o correo electrónico con un Cualquier tipo de archivo adjunto se ha vuelto más simple con la instalación de la gema "mail".

Paso: 1 Instalar "correo" joya

Paso: 2 En el archivo de rubí mantener la sintaxis se indica a continuación:

require 'mail' 
def mailsender 
     Mail.defaults do 
     delivery_method :smtp,{ address: "<smtp_address>",openssl_verify_mode: "none" } 
     end 

     Mail.deliver do 
     from  'from_mail_id' 
     to  'to_mail_id' 
     subject 'subject_to_be_sent' 
     # body  File.read('body.txt') 
     body  'body.txt' 
     add_file '<file_location>/Word Doc.docx' 
     add_file '<file_location>/Word Doc.doc' 
     end 
end 

Paso: 3 ahora Sólo tiene que llamar al método en la definición de paso.

Cuestiones relacionadas