Python 获取部分IMAP文本部分
我有一个电子邮件接口客户端,我使用IMAP处理我的请求。我希望能够显示,在实时,基本的电子邮件数据,为列表视图 例如,在GMail列表视图中。为此,我需要做一个IMAP请求,以获取所有电子邮件的主题、所有电子邮件的日期等。到目前为止,这是有效的 问题是,我还想显示正文文本的第一个字符。如果我使用Python 获取部分IMAP文本部分,python,imap,imaplib,Python,Imap,Imaplib,我有一个电子邮件接口客户端,我使用IMAP处理我的请求。我希望能够显示,在实时,基本的电子邮件数据,为列表视图 例如,在GMail列表视图中。为此,我需要做一个IMAP请求,以获取所有电子邮件的主题、所有电子邮件的日期等。到目前为止,这是有效的 问题是,我还想显示正文文本的第一个字符。如果我使用BODYSTRUCTURE调用来获取text/HTML部分的索引,则所需时间太长(对于具有数千个字符的电子邮件,每封电子邮件可能需要一秒钟以上的时间,而仅使用subject/date/etc调用最多需要0
BODYSTRUCTURE
调用来获取text/HTML
部分的索引,则所需时间太长(对于具有数千个字符的电子邮件,每封电子邮件可能需要一秒钟以上的时间,而仅使用subject/date/etc调用最多需要0.02秒
我试着使用BODY[INDEX]
字节,其中XYZ
是我们想要获得的第一个字节数,但令我沮丧的是,使用BODY[INDEX]
调用所需的时间与使用BODY[INDEX]
调用所需的时间一样长,有时甚至更长
有没有其他方法可以快速获得第一个文本字符?如果我想在我的界面上列出300封电子邮件,我不能只为获得第一个文本字符而花费每封电子邮件1秒钟的时间
为此,我将Python与imaplib结合使用,尽管可能与此无关。中定义了一个raw fetch命令
fetch2(正文[])
例如,如果要获取前100个字节的邮件,则可以按如下方式启动命令:
FETCH 2 (BODY[]<0.100>)
fetch2(正文[])
如果确实要获取消息的第一个文本部分的开头,则必须解析BODYSTRUCTURE。在获得所需文本部分的部分ID后,使用BODY[number]
语法
另一个答案中给出的建议将在多部分消息上失败(例如,如果您有一个
text/plain
和text/html
,这是当今最常见的格式)。是的。这就是我对上述答案的假设。使用BODY[INDEX]而不是BODY[],其中INDEX是text/html文本部分的索引。
FETCH 2 (BODY[]<0.100>)