2009-09-16 9 views
8

J'utilise la bibliothèque Ruby IMAP pour obtenir une conversation GMail. La manière dont GMail traite les conversations se fait via les en-têtes "Message-ID" et "In-Reply-To". Par exemple:Filetage GMail, IMAP et Ruby

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

Je n'arrive pas à comprendre comment obtenir efficacement le message de réponse à. La façon actuelle:

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 

Il faut vraiment beaucoup de temps pour le faire de manière séquentielle comme ça, mais je ne peux pas comprendre la incantatoire correcte pour rechercher par l'en-tête Message-ID, et je ne peux pas vraiment trouver toute preuve quant à savoir si cela est possible ou non.

Répondre

10

Apparemment, la bonne façon de le faire est la suivante:

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