【发布时间】:2013-12-09 23:16:54
【问题描述】:
我有许多 X-GM-THRID,我想检索这些线程的 uid 列表。
https://developers.google.com/gmail/imap_extensions 描述了如何为单个 X-GM-THRID 找到这些。但是,如果我可以对我想要数据的所有 X-GM-THRID 提出一个请求,那就太好了。当我尝试这个时,我只会得到错误代码。
有谁知道这是否可行?
我正在使用 python 并做类似的事情:
res, ids = imap_conn.uid('search', 'X-GM-THRID', thread_id)
# this works fine.
但我想做这样的事情:
res, ids = imap_conn.uid('search', 'X-GM-THRID', [thread_id1, thread_id2])
更新:
在@max 的回答之后,我现在正在做这样的事情:
res, ids = imap_conn.uid(
'search', None,
'(OR (OR (X-GM-THRID 123) X-GM-THRID 456) X-GM-THRID 789)')
# 123, 456, 789 are fake gmail thread ids
我不确定 gmail 究竟是什么或如何限制搜索长度 - 我认为这可能是字符数,而不是查询中的“或”数。在gmail开始返回错误之前,我可以逃脱大约9。
【问题讨论】:
-
如果我在一个线程中有超过 10 条消息,我将如何产生结果,我使用我的代码您可以检索 Thread_ID 中存在的 UID。 10个或超过10个
-
上面的代码检索三个给定线程的所有消息ID(线程中有多少消息没有区别)。例如,当我需要检索 20 个线程的 id 时,我会像上面一样进行 3 个查询(2*9 线程 id,1*2 线程 id),然后使用一个
fetch命令从返回的 id 中获取消息。