import imaplib server_url = 'mail-users.ece.fr' server_port = 993 login = 'xxx' password = 'xxx' subject = '[Django] Broken link on localhost:7999' verbose = False if verbose: print 'Trying to connect ...' M = imaplib.IMAP4_SSL(server_url, server_port) if verbose: print 'ok' if verbose: print 'Trying to loging in ...' M.login(login, password) if verbose: print 'ok' M.select() _, data = M.search(None, 'ALL') msg_id = data[0].split() if verbose: print 'Found %d msg' % len(msg_id) ret = {} for n in msg_id: _, raw_data = M.fetch(n, '(RFC822.HEADER)') header = raw_data[0][1].split('\r\n') for s in header: if ('Subject' in s) and (subject in s): _, raw_data = M.fetch(n, '(RFC822.TEXT)') text = raw_data[0][1].split('\r\n') data = { 'ref': text[0][10:], 'req': text[1][15:], 'ua': text[2][12:], 'ip': text[3][12:], } req = data['req'].strip('/') if req in ret: ret[req] += 1 else: ret[req] = 1 M.close() M.logout() ret = sorted(ret.items(), key=lambda x: x[1]) for key, value in ret: print value, key