我在python中使用'imaplib'从Gmail帐户获取电子邮件。但是我只想知道邮件的内容,附件的标题,而不需要下载完整的附件。
默认情况下,
myGmail = imaplib.IMAP4_SSL(...)
....
(respCode, data) = myGmail.fetch(mailUid, 'RFC822')
将返回电子邮件的整个部分,包括在返回数据中编码为文本的整个附件,这有时是巨大的和不必要的。
我在互联网和stackOverflow上搜索了答案。他们中的许多人提到使用
myGmail.fetch(mailUid, 'BODYSTRUCTURE')
首先确定电子邮件结构,然后确定要下载的部分。我还阅读了关于imap4协议的RFC 3501文档,其中提到我可以使用
,身体[]& lt的在在"获取命令"中下载特定的身体部位。
但我已经尝试了许多命令在python imaplib如下:
(rCode, data) = myGmail.fetch(mailUid, 'BODY[0]')
(rCode, data) = myGmail.fetch(mailUid, 'BODY0')
(rCode, data) = myGmail.fetch(mailUid, 'BODY[TEXT]')
但是它们都失败了,错误消息:
错误:FETCH命令错误:BAD ['Could not parse command']
所以谁能告诉我如何使用这个命令在python imaplib Gmail?
仅供参考,以上示例电子邮件的BODYSTRUCTURE为:
(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"
)
)
谢谢! !
将BODY[0]
替换为(BODY[1])