2009-09-16 1 views
8

Ich verwende die Ruby IMAP-Bibliothek, um eine GMail-Konversation zu erhalten. Die Art und Weise, in der GMail Konversationen fädelt, erfolgt über die Header "Message-ID" und "In-Reply-To". Zum Beispiel:GMail Threading, IMAP und Ruby

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

Ich kann nicht herausfinden, wie man die geantwortete Nachricht effizient erhält. Die aktuelle Art und Weise:

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 

Es dauert eine wirklich lange Zeit, wie die der Reihe nach zu tun, aber ich kann nicht die richtige Beschwörung herauszufinden durch die Message-ID-Header zu suchen, und ich kann nicht wirklich finden Belege dafür, ob dies möglich ist oder nicht.

Antwort

10

Offenbar ist der richtige Weg, dies zu tun ist:

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