星期六, 7月 18, 2009

IMAP in Python - 5 (Summary Information)

在對folder進行select或examine以後,server會回傳summary information。

來看看如何使用:

class IMAPLogic:
def __init__(self, proto):
self.proto = proto
self.factory = proto.factory
d = self.proto.login(self.factory.username, self.factory.password)
d.addCallback(lambda x:self.proto.examine('INBOX'))
d.addCallback(self.examineresult)
d.addCallback(self.logout)
d.addCallback(self.stopreactor)

d.addErrback(self.errorhappened)

def examineresult(self, data):
for key, value in data.items():
if isinstance(value, tuple):
print "%s: %s" % (key, ",".join(value))
else:
print "%s: %s" % (key, value)

在此例中,檢查了INBOX後,把結果傳給了examineresult,examineresult會把結果顯示出來。
程式跑出來的結果如下:

cacaegg@cacabook:~/workspace/NetworkProgram/src/IMAP$ texamine.py mx.mgt.ncu.edu.tw cacaegg
Enter password:
EXISTS: 0
PERMANENTFLAGS:
READ-WRITE: 0
UIDNEXT: 15020
FLAGS: \Answered,\Flagged,\Deleted,\Seen,\Draft,Junk,NonJunk,$MDNSent,$Forwarded,NotJunk
UIDVALIDITY: 1153809236
RECENT: 0

來解釋一下常用的item
EXISTS:folder中的message數目
FLAGS:可以放在此folder上的flag
RECENT:上次select之後,大約有多少新進的message
UIDVALIDITY:將此id與上次session比較,就可以用做uid驗證,確保uid相同的一樣的message

程式連結

沒有留言: