def fake_login(*args): raise IMAP4_SSL.error()
def run(config, db): #print "start of IS.run" #try: #print "useSSL",config.useSsl,"host",config.host if config.useSsl: server = IMAP4_SSL(config.host) else: server = IMAP4(config.host) response = server.login(config.username, config.password) #TODO catch authentication error #print(_("response to logging in: "), response) #print "server.list():",server.list() #prints list of folders response = server.select(config.folder) #print "response to selecting INBOX:",response if response[0] != "OK": print response[1] raise IMAP4_SSL.error(response[1]) #TODO: show error message neededMessages = [] response, searchData = server.search( None, "SUBJECT", "PokerStars Tournament History Request") for messageNumber in searchData[0].split(" "): response, headerData = server.fetch(messageNumber, "(BODY[HEADER.FIELDS (SUBJECT)])") if response != "OK": raise error #TODO: show error message neededMessages.append(("PS", messageNumber)) print _("Found %s eMails to fetch") % (len(neededMessages)) if (len(neededMessages) == 0): raise error #TODO: show error message NIL = Literal("NIL").setParseAction(replaceWith(None)) integer = Word(nums).setParseAction(lambda t: int(t[0])) quotedString.setParseAction(removeQuotes) content = (NIL | integer | Word(alphanums)) email_bodies = [] for i, messageData in enumerate(neededMessages, start=1): #print("Retrieving message %s" % i) # Obtain BODYSTRUCTURE call email_uid = messageData[1] response, bodystructure = server.fetch(email_uid, '(BODYSTRUCTURE)') if response != "OK": raise error #TODO: show error message response, bodyData = server.fetch(email_uid, "(UID BODY[TEXT])") if response != "OK": raise error #TODO: show error message if messageData[0] == "PS": splitted_bodystructure = string.split(str(bodystructure[0]), " ", 1) parsed_bodystructure = nestedExpr( content=content, ignoreExpr=quotedString).parseString(splitted_bodystructure[1]) charset = parsed_bodystructure[0][1][2][1] content_transfer_encoding = parsed_bodystructure[0][1][5] if content_transfer_encoding == 'QUOTED-PRINTABLE': decoded_body = quopri.decodestring( bodyData[0][1]).decode(charset) else: decoded_body = bodyData[0][1].decode(charset) email_bodies.append(decoded_body) #finally: # try: server.close() # finally: # pass server.logout() print _("Finished downloading emails.") errors = 0 if len(email_bodies) > 0: errors = importSummaries(db, config, email_bodies, options=None) else: print _("No Tournament summaries found.") print(_("Errors:"), errors)