2013-10-23 36 views
0

試圖從IMAP(gmail)獲取電子郵件,並與最後一部分苦苦掙扎。IMAP抓取身體太慢

如果我取剛郵件頭,在我的收件箱85臺的消息,它用了3秒時:

imap.fetch(message_ids, '(BODY.PEEK[HEADER.FIELDS (FROM TO CC SUBJECT DATE)])') 

但是,如果我嘗試獲取電子郵件的主體,它需要〜3分鐘:

imap.fetch(message_ids, '(RFC822)') 

imap.fetch(message_ids, '(BODY.PEEK[TEXT])') 

imap.fetch(message_ids, 'RFC822.TEXT') 

已嘗試將TCP_NODELAY設置爲此處建議的某個線程。 與imapClient lib和Twisted imap4模塊相同的問題

有什麼想法?

+1

你的身體是否包含大型附件?因爲沒有太多的數據,所以下載頭文件很快,但是如果您有大量20 MB的消息,則可能需要一段時間...也許您應該取得體型結構,以便可以找出主要部分,以及它的體積有多大。 – Max

+0

謝謝!必須看到身體結構和單獨獲取標題和身體。我以爲BODY [TEXT]只會帶來身體的文字內容,不得不取得BODY [1] – rafanunes

+0

很高興幫忙。我會將我的評論重新排列成一個答案,以便您接受它。 – Max

回答

1

所有這些將檢索郵件的完整MIME內容,如果它們包含附件,它們可能相當大,並且需要相當長的一段時間。

如果您獲取BODYSTRUCTURE,則可以解析消息的格式/結構,並在下載它之前瞭解它的大小,以及主「身體」部分的確切位置。