PythonImaplib下载Gmail文本而不下载完整附件

PythonImaplib下载Gmail文本而不下载完整附件,python,imap,gmail-imap,imaplib,Python,Imap,Gmail Imap,Imaplib,我正在使用python中的“imaplib”从Gmail帐户获取电子邮件。但我只想知道电子邮件的内容,附件的标题,但不需要下载完整的附件 默认情况下 myGmail = imaplib.IMAP4_SSL(...) .... (respCode, data) = myGmail.fetch(mailUid, 'RFC822') 将返回电子邮件的整个部分,包括返回数据中编码为文本的整个附件,这有时是巨大且不必要的 我在网上搜索了一下,想找到答案。其中许多提到要使用 myGmail.fetch(m

我正在使用python中的“imaplib”从Gmail帐户获取电子邮件。但我只想知道电子邮件的内容,附件的标题,但不需要下载完整的附件

默认情况下

myGmail = imaplib.IMAP4_SSL(...)
....
(respCode, data) = myGmail.fetch(mailUid, 'RFC822')
将返回电子邮件的整个部分,包括返回数据中编码为文本的整个附件,这有时是巨大且不必要的

我在网上搜索了一下,想找到答案。其中许多提到要使用

myGmail.fetch(mailUid, 'BODYSTRUCTURE')
首先确定电子邮件结构,然后确定要下载的部分。我也读过关于imap4协议的RFC3501文档,其中提到我可以使用

正文[] 在Fetch命令中下载特定的主体部分

但我在python imaplib中尝试了许多命令,如下所示:

(rCode, data) = myGmail.fetch(mailUid, 'BODY[0]')
(rCode, data) = myGmail.fetch(mailUid, 'BODY0')
(rCode, data) = myGmail.fetch(mailUid, 'BODY[TEXT]')
但它们都失败,并显示错误消息:

错误:获取命令错误:错误['无法分析命令']

那么有人能告诉我如何在PythonImaplib for Gmail中使用这个命令吗

仅供参考,上述示例电子邮件的正文结构为:

(BODY 
 (
  (
    (
      ("TEXT" "PLAIN" ("CHARSET" "us-ascii") NIL NIL "QUOTED-PRINTABLE" 1742 33)
      ("TEXT" "HTML" ("CHARSET" "us-ascii") NIL NIL "QUOTED-PRINTABLE" 17976 485) "ALTERNATIVE"
    )
    (
      "IMAGE" "JPEG" 
      ("NAME" "image001.jpg") "<image001.jpg@01CD029F.6831C440>" "image001.jpg" "BASE64" 4070
    ) 
    "RELATED"
  )
  ("APPLICATION" "PDF" ("NAME" "SAC 2012.pdf") NIL "SAC 2012.pdf" "BASE64" 20638)
  "MIXED"
 )
 )
(正文)
(
(
(
(“文本”“普通”(“字符集”“美国ascii”)无-无“引用-可打印”1742 33)
(“文本”“HTML”(“字符集”“美国ascii”)无-无“引用-可打印”17976 485“备选”
)
(
图像“JPEG”
(“名称”“image001.jpg”)“image001.jpg”“BASE64”4070
) 
“相关”
)
(“应用程序”PDF(“名称”SAC 2012.PDF)无“SAC 2012.PDF”BASE64 20638)
“混合”
)
)

谢谢

请将
正文[0]
替换为
(正文[1])

,这样很难追踪和重现问题。空白用户名和密码是可以的,但除此之外,所有内容都应该准备好粘贴。@JXITC-你知道这一点吗?如果是这样的话,请分享你的代码:)@ZacharyBurt事实上,我最终没有尝试获取主体结构并进行解析。相反,我只需下载所有内容(包括附件)一次。这是一个快速而肮脏的解决方案。@JXITC感谢您的响应。我在这里提出了一个类似的问题。请随我说,我会在22小时内增加赏金…身体部位计数从1开始。