Dopo aver visto come sfruttare alcuni servizi offerti da Yahoo, cerchiamo di capire ora cosa offre Google agli sviluppatori Ruby. In questo capitolo vedremo il modo di gestire in Ruby due servizi molto diversi tra loro: il classico servizio webmail e un interessante modo per creare dei grafici online.
Uno dei principali servizi offerti da Google è sicuramente GMail. Vediamo come leggere e scrivere la posta utilizzando la libreria gmailer
. Iniziamo col leggere i soggetti dei nuovi messaggi: bisogna aprire una connessione e poi iterare sui messaggi sul server.
require 'rubygems' require 'gmailer' name = 'YourUserName' pwd = 'YourPassword' gConn = GMailer.connect(:username=>name,:password=>pwd) gConn.messages(:standard=>'all',:read=>false).each_msg do |msg| puts "#{msg.sender}: #{msg.subject}" end
Si noti il valore false
di read
nella chiamata a messages
che sta proprio ad indicare che ci interessano solo i messaggi non letti. In alternativa avremmo potuto leggere tutti i messaggi e stampare solo quelli nuovi utilizzando il metodo new?
su ogni email:
gConn.messages(:standard=>'all').each do |msg| puts "#{msg.sender}: #{msg.subject}" if msg.new? end
È possibile in questa fase anche leggere solo i messaggi etichettati da una specifica label
passando a messages
il parametro label
:
g.messages(:label=>'db4o')
Ovviamente oltre al mittente e al soggetto è possibile accedere ad ogni parte del messaggio attraverso gli appositi metodi: body
, snipped
, labels
, msgid
, attachment
, etc.
Inoltre il metodo original
permette di accedere all'intero contenuto di header
.
Per scrivere un messaggio dal nostro account GMail, va utilizzato il metodo send
passandogli come argomenti tutti gli elementi dell'email:
sendmail = gConn.send( :to => "root@example.com, admin@fake.net", :cc => "user@example.com", :subject => "Gmail con Ruby", :body => "Questo È un test...nnCiaon", :files => "./list.tgz")
Per scrivere il testo dell'email in HTML occorre passare anche l'argomento :ishtml => 1
.
GMailer permette anche di gestire la rubrica visualizzando i contatti, aggiungendone di nuovi o eliminandoli. Lo stesso vale per le etichette:
gConn.create_label('nome_etichetta') gConn.rename_label('vecchio_nome', 'nuovo_nome') gConn.delete_label('nome_etichetta')
Dove rispettivamente creiamo, rinominiamo e cancelliamo un etichetta. Una volta creata l'etichetta è possibile associarla ad un messaggio identificato dal suo ID:
gConn.apply_label(msgid, 'nome_etichetta') gConn.remove_label(msgid, 'nome_etichetta')
GMailer offre un utile metodo per modificare le preferenze, visualizzabili attraverso il metodo preference, del nostro account:
gConn.update_preference( :max_page_size=>20, :keyboard_shortcuts=>true, :indicators=>true, :display_language=>'it', :signature=>'Home Page: http://example.com', :snippets=>false, :display_name=>'Tizio Incognito')
Vanno ricordate infine le funzionalità di archiviazione e di selezione dei messaggi e la gestione dello spam.