2009-09-16 20 views
8

Estoy usando la biblioteca Ruby IMAP para obtener una conversación de GMail. La forma en que GMail enhebra las conversaciones es a través de los encabezados de mensaje "ID de mensaje" y "En respuesta a". Por ejemplo:GMail threading, IMAP y Ruby

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

No puedo encontrar la manera de obtener de manera eficiente el mensaje de respuesta. La forma actual:

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 

Se necesita un tiempo muy largo para hacerlo secuencialmente así, pero no puedo averiguar el encantamiento correcto para buscar por la cabecera Message-ID, y realmente no puedo encontrar cualquier evidencia sobre si esto es posible o no.

Respuesta

10

Al parecer, la forma correcta de hacerlo es:

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