GMail Threading, IMAP и Ruby - PullRequest
       19

GMail Threading, IMAP и Ruby

8 голосов
/ 16 сентября 2009

Я использую библиотеку Ruby IMAP для разговора с GMail. Способ, которым потоки сообщений GMail проходят через заголовки сообщений «Идентификатор сообщения» и «In-Reply-To». Например:

In-Reply-To: <c0f07c940909151905w1ad93fabx19cf595f653c8b@mail.gmail.com>
Message-ID: <9cd2f5ff0909151911r30ddb805n5172970dffc872c2@mail.gmail.com>

Я не могу понять, как эффективно получить ответное сообщение. Текущий путь:

target = <c0f07c940909151905w1ad93fabx19cf595f653c8b@mail.gmail.com>
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

Требуется очень много времени, чтобы сделать это последовательно, но я не могу найти правильное заклинание для поиска по заголовку Message-ID, и я не могу найти никаких доказательств того, возможно ли это или нет.

1 Ответ

11 голосов
/ 16 сентября 2009

Видимо, правильный способ сделать это:

imap.search ["HEADER", "MESSAGE-ID", target]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...