Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取部分IMAP文本部分_Python_Imap_Imaplib - Fatal编程技术网

Python 获取部分IMAP文本部分

Python 获取部分IMAP文本部分,python,imap,imaplib,Python,Imap,Imaplib,我有一个电子邮件接口客户端,我使用IMAP处理我的请求。我希望能够显示,在实时,基本的电子邮件数据,为列表视图 例如,在GMail列表视图中。为此,我需要做一个IMAP请求,以获取所有电子邮件的主题、所有电子邮件的日期等。到目前为止,这是有效的 问题是,我还想显示正文文本的第一个字符。如果我使用BODYSTRUCTURE调用来获取text/HTML部分的索引,则所需时间太长(对于具有数千个字符的电子邮件,每封电子邮件可能需要一秒钟以上的时间,而仅使用subject/date/etc调用最多需要0

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

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

问题是,我还想显示正文文本的第一个字符。如果我使用
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>)