2016-12-01 98 views
2

因此,我正在研究Python腳本以從電子郵件中提取文本,並遵循these instructions這樣做。這是腳本迄今:Python電子郵件bot Pyzmail/IMAPclient錯誤

import imapclient 
import pprint 
import pyzmail 

mymail = "[email protected]" 
password = input("Password: ") 

imapObj = imapclient.IMAPClient('imap.gmail.com' , ssl=True) 
imapObj.login(mymail , password) 
imapObj.select_folder('INBOX', readonly=False) 
UIDs = imapObj.search(['SUBJECT Testing']) 
rawMessages = imapObj.fetch([5484], ['BODY[]']) 
message = pyzmail.PyzMessage.factory(rawMessages[5484]['BODY[]']) 

但是我得到這個錯誤:

message = pyzmail.PyzMessage.factory(rawMessages[5484]['BODY[]']) 
KeyError: 5484 

5484是針對搜索功能找到的電子郵件的ID。我也試過用UID代替5484,但那也行不通。提前致謝!

+0

rawMessages是什麼樣的,UID是什麼樣的?我猜測有一個UID爲5484的消息。默認情況下,IMAPClient使用UID。 –

回答

1

嘗試更換[ 'BODY []']與[b'BODY []']

1

謝謝@Madalin Stroe的。

我在Win10上使用python3.6.2和pyzmail1.0.3。 當我運行 message = pyzmail.PyzMessage.factory(rawMessages[4]['BODY[]']) 的ERR這樣表示:

Traceback (most recent call last): 
File "PATH/TO/mySinaEmail.py", line 42, in <module> 
message = pyzmail.PyzMessage.factory(rawMessages[4]['BODY[]']) 
KeyError: 'BODY[]' 

當我修改這message = pyzmail.PyzMessage.factory(rawMessages[4][b'BODY[]']),它運行良好。