2010-07-07 20 views
13

Ho bisogno di inviare una e-mail con un allegato tramite Ruby.Invia e-mail con allegato in Ruby

Conosci la ricerca in giro ma non hai trovato alcun esempio di script semplice per farlo.

Il più vicino che ho trovato è ActionMailer, ma sembra richiedere un sacco di altri script da eseguire. (NOTA: Non sto usando Ruby on Rails)

risposta

17

Hai controllato Mail? Questo è ciò su cui è costruita la nuova API ActionMailer di Rails 3.

"Mail è una libreria Internet per Ruby progettata per gestire la generazione di e-mail, l'analisi e l'invio in modo semplice e ruby."

ecco che arriva un rapido esempio dalla documentazione:

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 } 

Aggiornamento: O ancora più semplicemente:

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

I ragazzi dicono chiaramente che non sta usando Rails – sergiovilar

+2

@sergiovilar: Mail è una pura libreria Ruby. Non dipende da Rails. Quindi è una risposta valida (anche oggi, 6 anni dopo che la risposta è stata pubblicata). –

+0

Ricevo questo errore: 'metodo non definito '[]' per nil: NilClass' – mpora

1

l'invio di email o Email con a qualsiasi tipo di allegato è diventato più semplice con l'installazione gem "mail".

Fase: 1 Installare "mail" gioiello

Passo: 2 Nel file rubino mantenere la sintassi indicato di seguito:

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 

Passo: 3 ora Basta chiamare il metodo nella definizione fase.