2016-08-03 101 views
1

我有这个Python代码:蟒蛇IMAP4提取主题邮件

import imaplib 
import email, sys 
imaplib._MAXLINE = 40000 

mail = imaplib.IMAP4('imapmail.libero.it') 
mail.login('[email protected]', 'password') 
mail.list() 
mail.select('inbox') 

result, data = mail.search(None, 'All') 
out = open('output.txt', 'a', 0) 
for latest_email_uid in data[0].split(): 
    try: 
     result, data = mail.uid('fetch', latest_email_uid, '(RFC822)') 
     raw_email = data[0][1] 
     email_message = email.message_from_string(raw_email) 
     tmp = email_message['Subject'] 
     tmp = tmp.strip().replace('\r','').replace('\n','')+'\n' 
     sys.stdout.write("\r"+tmp) 
     out.write(tmp.strip() + '\n') 
    except Exception as e: 
     print e 

mail.close() 
out.close() 

代码返回此错误:

'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
"Samsung MZ-7KE1T0BW SSD 850 PRO..." 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
Promozione finestre termiche in pvc Gruppo Re 
Il Giubileo di Papa Francesco 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 
'NoneType' object has no attribute '__getitem__' 

我需要从收件箱中提取出所有科目和文本文件描述。在另一个电子邮件服务中,我的代码没有问题。我该如何解决这个问题?哪里有问题 ?

回答

0

当你这样做......

result, data = mail.search(None, 'All') 

... data持有message sequence numbers,不uids。消息序号和UID不一样。

所以,修正代码,代替与上述行:

result, data = mail.uid('search', None, 'All') 

的UID是一个唯一的标识符,不会随时间改变而 消息序列号可能会改变,每当内容邮箱 更改。

你可以阅读更多关于属性UIDMessage Sequence Numbers这里:https://tools.ietf.org/html/rfc3501