我在python中使用'imaplib'從Gmail帳戶獲取電子郵件。但我只想知道電子郵件的內容,附件的標題,但不需要下載完整的附件。Python imaplib下載Gmail文本沒有下載完整附件
默認情況下,
myGmail = imaplib.IMAP4_SSL(...)
....
(respCode, data) = myGmail.fetch(mailUid, 'RFC822')
將返回郵件的整個部分,包括在返回的數據編碼爲文本整個附件,這有時是巨大的和不必要的。
我已經通過互聯網搜索和stackoverflow找到答案。其中許多人提到要使用
myGmail.fetch(mailUid, 'BODYSTRUCTURE')
首先確定電子郵件結構,然後確定要下載的部分。而且我也看到了RFC 3501文檔有關IMAP4協議,在which提到它,我可以使用
BODY[]<> to download the specific body part in Fetch command.
但我已經試過在python imaplib許多命令像下面:
(rCode, data) = myGmail.fetch(mailUid, 'BODY[0]')
(rCode, data) = myGmail.fetch(mailUid, 'BODY0')
(rCode, data) = myGmail.fetch(mailUid, 'BODY[TEXT]')
但所有其中有錯誤消息失敗:
error: FETCH command error: BAD ['Could not parse command']
因此,任何人都可以告訴我如何在python imaplib for 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") "<[email protected]>" "image001.jpg" "BASE64" 4070
)
"RELATED"
)
("APPLICATION" "PDF" ("NAME" "SAC 2012.pdf") NIL "SAC 2012.pdf" "BASE64" 20638)
"MIXED"
)
)
謝謝!
請[不要遺漏代碼](http://sscce.org) - 這使得很難追查和重現問題。空白用戶名和密碼很好,但除此之外,一切都應該準備好粘貼。 – phihag 2013-03-24 10:59:16
@JXITC - 你有沒有想過這個?如果是這樣,請分享您的代碼:) – 2013-03-31 16:52:49
@ZacharyBurt實際上最終我沒有嘗試獲取BODY結構,然後解析。相反,我只是簡單地下載所有內容(包括附件)一次。這是一個快速和骯髒的解決方案。 – JXITC 2013-04-01 14:08:04