Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Inviare email con Ruby

Articolo scritto da Claudio Garau

Come ogni linguaggio di programmazione di buon livello anche Ruby consente l'invio di messaggi di posta elettronica. Per far questo non è necessario digitare tanto codice, è sufficiente invece passare all'interprete del linguaggio un file completo di tutti i parametri necessari all'invio.

Alla base di tutto abbiamo un libreria specifica denominata Net::SMTP che mette a disposizione dell'utente tutte le funzionalità necessarie per inviare email tramite il protocollo SMTP (Simple Mail Transfer Protocol); grazie alla libreria Net::SMTP sarà infatti possibile creare un oggetto in grado di aprire una connessione TCP (Transmission Control Protocol) e di connettersi al server per l'invio. L'oggetto in questione è utilizzato da un metodo specifico denominato start.

(L'articolo continua più sotto...)

E' bene precisare che Net::SMTP non consente di inviare posta elettronica tramite Internet, non svolge cioè una funzione simile a quella che può essere la funzione mail() di un linguaggio di scripting come PHP.
Il suo compito somiglia molto di più a quello di un client di posta che a quello di un Webmail per la corrispondenza on-line.

Detto questo, vediamo un pò di codice; di seguito mostremo un semplice programmino in grado di inviare un'email sulla base dei parametri definiti dall'utente:

#inviare una email con Ruby

#richiamiamo la libreria per la connessione al server
  require 'net/smtp'
  
#specifichiamo i parametri relativi a mittente e destinatario
  nome_mittente = 'Mio nome'
  email_mittente = 'info@miamail.it'
  nome_destinatario = 'Suo nome'
  email_destinatario = 'info@suamail.it'
  
#specifichiamo i parametri di autenticazione al server
  host_smtp = 'smtp.provider.it'
  porta_smtp = 25
  dominio_smtp = 'provider.it'
  utente_smtp = 'user'
  password_smtp = 'password'
  
#oggetto e corpo della email
  oggetto = 'Inviare una mail con Ruby'
  body = "Ciao Mondo!.\n"
  
#passiamo i parametri ad un variabile
  messaggio = <<END_OF_MESSAGE
  From: #{nome_mittente} <#{email_mittente}>
  To: #{nome_destinatario} <#{email_destinatario}>
  Subject: #{oggetto}
  
  #{body}
  END_OF_MESSAGE
  
#inviamo l'email tramite il metodo start 
  Net::SMTP.start(host_smtp, 
  porta_smtp, 
  dominio_smtp, 
  utente_smtp, 
  password_smtp, :plain) do |smtp|
  smtp.send_message messaggio, utente_smtp, email_destinatario
  
#chiudiamo il blocco delle istruzioni 
  end
Riepilogando quanto visto nel codice, possiamo notare che la prima azione da compiere è quella relativa alla chiamata della libreria per la connessione al server di posta.

In secondo luogo è necessario specificare i dati relativi al mittente e al destinatario, nome e indirizzo email di chi spedice e stessi dati per quanto riguarda l'utente che dovrà ricevere il messaggio.

La connessione al server SMTP non potrà avvenire senza che vengano indicati i necessari parametri di autenticazione: il nome dell'host del server, la porta sulla quale il server è in ascolto in attesa di eventuali messaggi, il nome di dominio relativo al server di posta, le credenziali del mittente per l'utilizzo del servizio (username e password).

Si procede poi con l'indicazione dell'oggetto e del corpo del messaggio; questi ultimi dati vengono passati come valori per una variabile che contiene anche gli headers precedentemente specificati.

Infine, viene richiamato il metodo start della libreria Net::SMTP.start che attraverso i parametri di autenticazione si connette al server e tramite l'istruzione do (letteralmente "fai") permette l'invio del messaggio.

Da notare come il simbolo :plain non specifichi la tipologia del messaggio (non corrisponde quindi al plain text del formato della mail), ma la metodologia di autenticazione (o schema).

Propriamente esistono 3 metodologie di autenticazione ad un server di SMTP e Ruby le supporta tutte; esse sono PLAIN, LOGIN e CRAM MD5, parametri che però rigurdano argomento relativi alla gestione dei server di posta e non lo stesso Ruby; i curiosi possono comunque approdire il discorso tramite una delle numerose risorse presenti in Rete a questo riguardo.

Corsi
Corso Ruby e Ruby On RailsCorso Ruby e Ruby On Rails
Creare software ed applicazioni Web con Ruby e ROR. A partire da 49 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122