0

我正在使用IMAPClient编写电子邮件客户端。我现在的目标是在我的收件箱中呈现消息列表。消息数量约为 4000 条。问题是像这样获取这些字母需要很长时间:

server = IMAPClient(HOST, use_uid=True, ssl=True)
server.login(USERNAME, PASSWORD)    
server.select_folder('INBOX')
messages = server.search(['NOT DELETED'])
response = server.fetch(messages, ['RFC822', 'BODY[TEXT]']) # TAKES AGES TO FINISH

看起来很直观,我应该询问前 20 条消息,然后如果用户向下滚动,则询问下一部分 20 条消息(按收到信的日期排序)。换句话说,我应该以某种方式对命令进行分页fetch,或者让它变得懒惰。但是 IMAPClient 似乎对此保持沉默,尽管这似乎是一个主要问题。有任何想法吗 ?

4

1 回答 1

1

你最好的选择是messages分成几块,然后只请求你当时需要的消息。

为了快速构建消息列表以显示给用户,您可能需要考虑ENVELOPE首先请求所有消息。IMAP 服务器通常为此进行了优化,并且响应比or响应ENVELOPE小得多。RFC822BODY[TEXT]

于 2017-08-06T23:42:05.520 回答