2012-02-26 22 views
1

我有一個python腳本如下:未讀郵件佔

import imaplib, re 
import os 
import time 
import socket 

imap_host = 'imap.gmail.com' 
mail = imaplib.IMAP4_SSL(imap_host) 
mail.login("user", "pass") 
mail.select("inbox") # connect to inbox. 

while True: 
    try: 
     result, data = mail.uid('search', None, 'UNSEEN') 
     uid_list = data[0].split() 
     print len(uid_list), 'Unseen emails.' 
     if len(uid_list) > 20: 
     os.system('heroku restart --app xxx') 
     time.sleep(60) 
    except KeyboardInterrupt: 
     print 'Quitting' 
     pass 

的目標是要檢查有多少未讀郵件,並重新啓動服務器的Heroku。問題在於它似乎不能很好地工作。

~# python gmail_new.py 
1 Unseen emails. 
0 Unseen emails. 

當我開始了第一次,它的工作原理(1個未讀郵件),但它應該已返回20,而不是0。而接下來的第二次也是0,從來沒有超過0。我不能似乎找出原因。

+1

我無法複製:使用我的帳戶,我收到「1封看不見的電子郵件」一遍又一遍地打印。 – 2012-02-26 23:17:03

+0

另外,它爲什麼會第二次返回20?在等待的那一刻你收到了19封新郵件嗎?另外,你確定你沒有在隔時間內檢查該電子郵件嗎? – 2012-02-26 23:19:26

回答

-1

據我所知,你會得到一個額外的看不見的電子郵件。 確保您的帳戶中有幾封未讀郵件。 取代:

print len(uid_list), 'Unseen emails.' 

print len(uid_list)-1, 'Unseen emails.' 

這應該工作。