2009-09-16 15 views
8

Sto utilizzando la libreria IMAP Ruby per ottenere una conversazione GMail. Il modo in cui GMail inserisce le conversazioni avviene tramite le intestazioni dei messaggi "Message-ID" e "In-Reply-To". Ad esempio:Threading GMail, IMAP e Ruby

In-Reply-To: <[email protected]> 
Message-ID: <[email protected]> 

Non riesco a capire come ottenere in modo efficiente il messaggio di risposta. Il modo corrente:

target = <[email protected]> 
imap.search(["NOT", "DELETED"]).each do |msg_id| 
    uid = imap.fetch(message_id, "ENVELOPE")[0].attr["ENVELOPE"].message_id 
    if uid == target 
    m = imap.fetch(msg_id, "RFC822")[0].attr["RFC822"] 
    end 
end 

Ci vuole un sacco di tempo per farlo in modo sequenziale del genere, ma io non riesco a capire l'incantesimo corretto per cercare per l'intestazione Message-ID, e non riesco davvero a trovare qualsiasi prova sul fatto che sia possibile o meno.

risposta

10

A quanto pare, il modo corretto per farlo è:

imap.search ["HEADER", "MESSAGE-ID", target]