3

我有一个电子邮件接口客户端,我正在使用 IMAP 来处理我的请求。我希望能够实时显示列表视图的基本电子邮件数据。

例如,在 GMail 列表视图中。为此,我需要做一个 IMAP 请求来获取所有电子邮件的主题、所有电子邮件的日期等。到目前为止,这是可行的。

问题是,我还想显示正文的第一个字符。如果我使用BODYSTRUCTURE调用来获取该text/HTML部分的索引,则需要很长时间(对于具有数千个字符的电子邮件,每封电子邮件可能需要超过一秒,而仅使用主题/日期/等调用最多需要大约 0.02 秒。

我尝试使用我们想要获取的第一个字节数的字节,但令我沮丧的是,它需要与使用调用一样长的BODY[INDEX]<0.XYZ>时间。有时甚至更多。XYZBODY[INDEX]

是否有另一种方法可以快速获取第一个文本字符?如果我想在我的界面上列出 300 封电子邮件,我无法承受每封电子邮件花费 1 秒钟的时间来获取第一个文本字符。

为此,我将 Python 与 imaplib 一起使用,尽管可能不相关。

4

2 回答 2

3

存在IMAP RFC中定义的原始提取命令。

FETCH 2 (BODY[]<0.size>)

例如,如果您想获取前 100 个字节的邮件,那么您可以将命令触发为

FETCH 2 (BODY[]<0.100>)
于 2013-04-04T04:20:36.547 回答
2

如果您真的想获取消息的第一个文本部分的开头,则必须解析 BODYSTRUCTURE。获取所需文本部分的部分 ID 后,使用BODY[number]<0.size>语法。

另一个答案中给出的建议将在多部分消息上失败(例如,如果您有一个text/plainand text/html,这是当今最常见的格式。

于 2013-04-08T09:18:41.343 回答