Imaplib 与 GMail 偏移 uid

Imaplib with GMail offsets uids

我正在使用带有范围参数的 pythons ImapLib 查询我的 gmail 收件箱,但我返回的 uid 与我请求的有偏差。我的要求如下:

M = imaplib.IMAP4_SSL('imap.gmail.com')
M.login(USER, PASS)
# Choose the inbox for finding mail
M.select('INBOX')
rv, data = M.uid("search", None, '29540:*')

这returns一个单一的UID,29725。

如果我从起始范围减去 421(通过反复试验找到),我将得到从 29540 到 2972​​5 的完整 uid 列表。我很难过。会不会是它没有在这个范围内使用 UID,并且在某种程度上对删除的电子邮件有问题?

似乎M.uid 只是指定return 值将是UID,所以仍然有必要指定发送的参数将是UID 而不是消息ID。这修复了它:

rv, data = M.uid("search", None, 'UID', '29540:*')

rv, data = M.uid("search", None, '(UID 29540:*)')