26 Sep
matte

matte il 26 September 2007 parla di Rails Snippet

Problemi con Lib Ruby GMailer e Debian

Per Bzzers, il social network che abbiamo messo online alcuni giorni fa è stato necessario creare un modulo per l’invio di inviti agli amici prendendo automaticamente la lista dei contatti da GMail. Ho installato la gemma gmailer 0.1.7 e tutto funzionava in development, ma sul server in produzione ottenevo il seguente errore:

    1 /usr/lib/ruby/1.8/net/protocol.rb:133:in `sysread': Connection reset by peer (Errno::ECONNRESET)
    2         from /usr/lib/ruby/1.8/net/protocol.rb:133:in `rbuf_fill'
    3         from /usr/lib/ruby/1.8/timeout.rb:56:in `timeout'
    4         from /usr/lib/ruby/1.8/timeout.rb:76:in `timeout'
    5         from /usr/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill'
    6         from /usr/lib/ruby/1.8/net/protocol.rb:116:in `readuntil'
    7         from /usr/lib/ruby/1.8/net/protocol.rb:126:in `readline'
    8         from /usr/lib/ruby/1.8/net/http.rb:2017:in `read_status_line'
    9         from /usr/lib/ruby/1.8/net/http.rb:2006:in `read_new'
   10         from /usr/lib/ruby/1.8/net/http.rb:1047:in `request'
   11         from /usr/lib/ruby/1.8/net/http.rb:1034:in `request'
   12         from /usr/lib/ruby/1.8/net/http.rb:543:in `start'
   13         from /usr/lib/ruby/1.8/net/http.rb:1032:in `request'
   14         from /usr/lib/ruby/1.8/net/http.rb:769:in `get'
   15         from ./script/gm:7

Dopo vari controlli e prove ho capito che il problema era nel pacchetto Debian “libopenssl-ruby1.8 “. Una volta aggiornato alla versione 1.8.5-4 tutto è filato liscio senza alcun problema…

9 Commenti a “Problemi con Lib Ruby GMailer e Debian”

  1. alessandro chinazzo il 24 October 2007 alle 18:27 dice:

    Ciao a tutti, intanto complimenti per il blog mi è stato molto utile :)

    Ho un problema simile al suddetto:

    /usr/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/commands/runner.rb:47: /usr/lib/ruby/1.8/net/protocol.rb:133:in sysread': end of file reached (EOFError)
    from /usr/lib/ruby/1.8/net/protocol.rb:133:in
    rbuffill’
    from /usr/lib/ruby/1.8/timeout.rb:56:in timeout'
    from /usr/lib/ruby/1.8/timeout.rb:76:in
    timeout’
    from /usr/lib/ruby/1.8/net/protocol.rb:132:in rbuf_fill'
    from /usr/lib/ruby/1.8/net/protocol.rb:116:in
    readuntil’
    from /usr/lib/ruby/1.8/net/protocol.rb:126:in readline'
    from /usr/lib/ruby/1.8/net/smtp.rb:664:in
    recv
    response’
    from /usr/lib/ruby/1.8/net/smtp.rb:396:in do_start'
    ... 11 levels...
    from /usr/lib/ruby/gems/1.8/gems/rails-1.2.1/lib/commands/runner.rb:47
    from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
    gemoriginalrequire’
    from /usr/lib/ruby/siteruby/1.8/rubygems/customrequire.rb:27:in `require’
    from /var/www/thi.relactions.com/html/rails/script/runner:3

    il sistema operativo è linux centos.

    Potrebbere essere lo stesso problema secondo voi?

    grazie, saluti

  2. alessandro chinazzo il 25 October 2007 alle 10:54 dice:

    Ciao,

    mi sa che è un problema di firewall.

    saluti

  3. matte il 25 October 2007 alle 14:04 dice:

    Ok! Nel caso in cui non avessi risolto facci sapere!

  4. alessandro chinazzo il 26 October 2007 alle 09:40 dice:

    Il problema è stato risolto ma non mi hanno messo al corrente di cosa l’ha generato. E’ stato escluso che si trattasse di firewall, quindi credo che sia stato qualche pacchetto aggiornato lunedi scorso… sapete per caso se aggiornando python viene installata qualche dipendenza particolare che potrebbe aver generato questo problema?

    grazie ancora

    ciao

  5. Franz il 21 January 2008 alle 16:37 dice:

    Salve,
    scusate la domanda forse posta in modo errata ma ho un problema con la
    gemma gmailer 0.2.1

    Utilizzo gmailer per accedere alla mia casella di posta gmail che
    attualmente ha 4 pagine.
    il codice per connettermi:
    GMailer.connect(nomeutente,password) do |g|
    g.messages(:standard=>’Inbox’,:read => false).each {|m| …….}

    Ho provato in qualsiasi maniera utilizzando anche :pos => come attributo
    ma:
    a) non riesco a vedere il numero totale di pagine della mia casella di
    posta;
    b) riesco a vedere solo le e-mail della prima pagina (es 50);
    c) riesco a scaricare SOLO le e-mail della prima pagina.

    Non capisco come vedere e scaricare le e-mail a pagina 2,3,4…
    Avete qualche idea/soluzione da consigliarmi?
    Grazie infinite

  6. matte il 21 January 2008 alle 17:59 dice:

    Ciao Franz,
    vediamo se riesco a risponderti a tutto… L’help della gemma non è molto ben fatto e bisogna provare un po’ a casaccio…

    Allora, con il comando

    g.messages(:standard=>’Inbox’).total
    

    riesci a vedere il numero totale di mail all’interno della cartella Inbox. A questo punto utilizzando il parametro pos riesci a scorrere i messaggi… Tieni presente che pos = 0 è il primo messaggio, pos = 1 è il secondo e così via. Quindi per leggere la pagina 2, se hai 50 messaggi per pagina devi scrivere:

    g.messages(:standard=>’Inbox’, :pos => 50)
    

    Per capire il numero di messaggi per pagina fai un ciclo sui messaggi che ricevi con pos = 0

    g.messages(:standard=>’Inbox’).each{|m| m}.size
    

    Spero di aver risolto i tuoi dubbi… altrimenti dimmelo che cerco di spiegartelo meglio.

  7. Fra il 21 January 2008 alle 19:43 dice:

    Con questo metodo(che hai postato tu):
    g.messages(:standard=>’Inbox’).each{|m| m}.size

    vedi solo la prima pagina.
    Credo che non resti che fare
    @x = g.messages(:standard=>’Inbox’).total
    cosi’ trovo tutte le mail nella casella.

    poi posso fare un ciclo per ogni mail da 1 a total ovvero @x…
    Credi ci sia una soluzione migliore?

  8. Franz il 22 January 2008 alle 11:33 dice:

    Ciao Matte,
    Concludo dicendo che questa gemma( a mio parere )è veramente implementata male.

    Sono riuscito (come ti dicevo ieri alle 19,43) a scaricare tutte le mail ma è comunque un’odissea perchè in internet non si trova documentazione se non le solite 2 pagine.
    Quindi vorrei sapere da te, se sei riuscito a scaricare gli allegati ( io non riesco in nessun modo) e soprattutto come riesci a leggere il body di un messaggio.
    Faccio
    GMailer.connect(nomeutente,password) do |g|
    g.messages(:standard=>’Inbox’,:pos=>@counter).each{|m|

    m.body #non funziona
    m.title #non funziona
    m.attachment #non riesco a capire come scaricare su pc gli eventuali allegati
    }
    Promettendoti che è l’ultima domanda, ti
    ringrazio per la pazienza.
    Saluti ;)

  9. matte il 22 January 2008 alle 12:15 dice:

    Ciao Franz,

    per quanto riguarda la lettura di un messaggio credo tu debba procedere in questo modo, utilizzando each_msg invece che each:

    g.messages(:standard=>’Inbox’,:pos=>@counter).each_msg{|m|
      m.sender  # Mittente
      m.subject  # Oggetto
      m.body   # Corpo
    }
    

    Per quanto riguarda gli attachment puoi utilizzare il metodo attachment per avere un array con il nome di tutti gli allegati (utilizza each e non each_msg per il metodo attachment). Ho provato un secondo, ma sembra dare alcuni problemi… In ogni caso va un po’ adoperato io sinceramente la gemma non l’ho mai utilizzata per i messaggi, ma solo per i contatti.

    Comunque puoi leggere il README e vedrai che per scaricare un attachment puoi utilizzare:

    attachment(attachment_id,message_id,filename,zipped)
    

    dopo aver reperito dal messaggio tutti gli argomenti da passare alla funzione. Guarda un po’ ce la dovresti fare con un po’ di tentativi. Casomai guarda nella guida per ogni oggetto i metodi disponibili e alcuni degli esempi fatti.

Scrivi un commento