class EmailScheduleServer: def __init__(self, user, pw, admin, shopper=[]): self.id = "Mail Robot" self.admin = admin self.shopper = shopper self.datapath = sys.argv[0].rsplit("/", 1)[0] print "Datapath set to:", self.datapath self.memory = memory.Memory(self.datapath, "email_server") self.eh = EmailHelper() self.eh.setLoginData(user, pw) self.cart_send = False def saveMail(self, sender, body, date, sender_name): self.memory.insertData(date, [sender, body, sender_name]) def checkForNewJobs(self): msgs = self.eh.fetchEmails(True) for msg in msgs: # [from,subject,message body,date,attachmentname,sender_name] try: if msg[1] == "**newrobotjob": if not self.memory.hasKey(msg[3]): content = self.extractDataFromBody(msg[2]) if not self.eh.isAddressValid(content["receiver"]): failmsg = ["FAIL: Job not added", "Invalid recepient address provided. Job skipped"] self.sendFail(msg[0], *failmsg) if content["message"] == "": failmsg = ["FAIL: Job not added", "Message body seems to be empty"] self.sendFail(msg[0], *failmsg) else: # everything seems fine content["attachment"] = msg[4] self.saveMail(msg[0], content, msg[3], msg[5]) self.sendConfirmation(msg[3]) elif msg[1] == "**shopping": self.updateShoppingCart(msg[0], msg[2]) elif msg[1] == "**mask": self.sendMask(msg[0]) else: # check for keywords in current jobs and send response key = self.validKeywordFound(msg) if not key is None: data = self.memory.getData(key) self.eh.sendMail(msg[5], data[0], data[1]["subject"], msg[2]) self.memory.removeData(key) else: print "unknown email received" print "transfering to admin" self.transferMessageToAdmin(msg) print "msg", msg self.eh.deleteMailByDate(msg[3]) except Exception, e: print "evaluating new email job failed!" print e