def ArchiveToOpenERP(self, recs, mail): import win32ui, win32con conn = xmlrpclib.ServerProxy(self._uri + '/xmlrpc/object') import eml eml_path=eml.generateEML(mail) att_name = ustr(eml_path.split('\\')[-1]) cnt=1 for rec in recs: #[('res.partner', 3, 'Agrolait')] cnt+=1 obj = rec[0] obj_id = rec[1] ids=execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.attachment','search',[('res_id','=',obj_id),('name','=',att_name)]) if ids: name=execute(conn,'execute',self._dbname,int(self._uid),self._pwd,obj,'read',obj_id,['name'])['name'] msg="This mail is already attached to object with name '%s'"%name win32ui.MessageBox(msg,"Make Attachment",win32con.MB_ICONINFORMATION) continue sub = ustr(mail.Subject) if len(sub) > 60: l = 60 - len(sub) sub = sub[0:l] res={} res['res_model'] = obj content = "".join(open(eml_path,"r").readlines()).encode('base64') res['name'] = att_name res['datas_fname'] = sub+".eml" res['datas'] = content res['res_id'] = obj_id execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.attachment','create',res)
def ArchiveToOpenERP(self, recs, mail): import win32ui, win32con conn = xmlrpclib.ServerProxy(self._uri + '/xmlrpc/object') import eml eml_path = eml.generateEML(mail) att_name = ustr(eml_path.split('\\')[-1]) cnt = 1 for rec in recs: #[('res.partner', 3, 'Agrolait')] cnt += 1 obj = rec[0] obj_id = rec[1] ids = execute(conn, 'execute', self._dbname, int(self._uid), self._pwd, 'ir.attachment', 'search', [('res_id', '=', obj_id), ('name', '=', att_name)]) if ids: name = execute(conn, 'execute', self._dbname, int(self._uid), self._pwd, obj, 'read', obj_id, ['name'])['name'] msg = "This mail is already attached to object with name '%s'" % name win32ui.MessageBox(msg, "Make Attachment", win32con.MB_ICONINFORMATION) continue sub = ustr(mail.Subject) if len(sub) > 60: l = 60 - len(sub) sub = sub[0:l] res = {} res['res_model'] = obj content = "".join(open(eml_path, "r").readlines()).encode('base64') res['name'] = att_name res['datas_fname'] = sub + ".eml" res['datas'] = content res['res_id'] = obj_id execute(conn, 'execute', self._dbname, int(self._uid), self._pwd, 'ir.attachment', 'create', res)
def CreateEmailAttachment(self, rec, mail): import eml email, path = eml.generateEML(mail) conn = xmlrpclib.ServerProxy(self._uri+ '/xmlrpc/object') obj = rec[0] obj_id = rec[1] res = {} res['res_model'] = obj ls = ['*', '/', '\\', '<', '>', ':', '?', '"', '|', '\t', '\n',':','~'] fn = (mail.Subject).replace(' ','') for c in ls: fn = fn.replace(c,'') if len(fn) > 64: l = 64 - len(fn) f = fn.split('-') fn = '-'.join(f[1:]) if len(fn) > 64: l = 64 - len(fn) f = fn.split('.') fn = f[0][0:l] + '.' + f[-1] fn = fn[:-4]+".eml" f = open(path) content = "".join(f.readlines()).encode('base64') f.close() res['name'] = fn res['datas_fname'] = fn res['datas'] = content res['res_id'] = obj_id id = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.attachment','create',res) return id
def ArchiveToOpenERP(self, recs, mail): import win32ui, win32con conn = xmlrpclib.ServerProxy(self._uri + '/xmlrpc/object') import eml msg = "" ext_msg = "" eml_path = eml.generateEML(mail) att_name = ustr(eml_path.split('\\')[-1]) cnt = 1 flag = False for rec in recs: #[('res.partner', 3, 'Agrolait')] cnt += 1 obj = rec[0] obj_id = rec[1] ids = execute(conn, 'execute', self._dbname, int(self._uid), self._pwd, 'ir.attachment', 'search', [('res_id', '=', obj_id), ('name', '=', att_name)]) object_ids = execute(conn, 'execute', self._dbname, int(self._uid), self._pwd, 'ir.model', 'search', [('model', '=', obj)]) object_name = execute(conn, 'execute', self._dbname, int(self._uid), self._pwd, 'ir.model', 'read', object_ids, ['name'])[0]['name'] sub = ustr(mail.Subject) if ids: name = execute(conn, 'execute', self._dbname, int(self._uid), self._pwd, obj, 'read', obj_id, ['name'])['name'] ext_msg += """ - File "{0}.eml" is already archived to {1} "{2}" . """.format(sub, object_name, name) continue if len(sub) > 60: l = 60 - len(sub) sub = sub[0:l] res = {} res['res_model'] = obj content = "".join(open(eml_path, "r").readlines()).encode('base64') res['name'] = att_name res['datas_fname'] = sub + ".eml" res['datas'] = content res['res_id'] = obj_id execute(conn, 'execute', self._dbname, int(self._uid), self._pwd, 'ir.attachment', 'create', res) msg += """ - File "{0}.eml" archived to {1} "{2}". """.format(sub, object_name, str(rec[2])) flag = True if flag: t = "Mail archived to OpenERP.\nArchive Summary : \n" if ext_msg != "": t += "\nAlready Attached Documents : \n" + ext_msg + "\n" t += "Newly Attachment Documents:\n" + msg win32ui.MessageBox(t, "Archive To OpenERP", win32con.MB_ICONINFORMATION) return flag
def ArchiveToOpenERP(self, recs, mail): import win32ui, win32con conn = xmlrpclib.ServerProxy(self._uri + '/xmlrpc/object') import eml msg = "" ext_msg = "" eml_path=eml.generateEML(mail) att_name = ustr(eml_path.split('\\')[-1]) cnt=1 flag=False for rec in recs: #[('res.partner', 3, 'Agrolait')] cnt+=1 obj = rec[0] obj_id = rec[1] ids=execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.attachment','search',[('res_id','=',obj_id),('name','=',att_name)]) object_ids = execute ( conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.model','search',[('model','=',obj)]) object_name = execute( conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.model','read',object_ids,['name'])[0]['name'] sub = ustr(mail.Subject) if ids: name=execute(conn,'execute',self._dbname,int(self._uid),self._pwd,obj,'read',obj_id,['name'])['name'] ext_msg+=""" - File "{0}.eml" is already archived to {1} "{2}" . """.format(sub,object_name,name) continue if len(sub) > 60: l = 60 - len(sub) sub = sub[0:l] res={} res['res_model'] = obj content = "".join(open(eml_path,"r").readlines()).encode('base64') res['name'] = att_name res['datas_fname'] = sub+".eml" res['datas'] = content res['res_id'] = obj_id execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.attachment','create',res) msg+=""" - File "{0}.eml" archived to {1} "{2}". """.format(sub,object_name,str(rec[2])) flag=True if flag: t = "Mail archived to OpenERP.\nArchive Summary : \n" if ext_msg != "" : t+="\nAlready Attached Documents : \n"+ext_msg +"\n" t+="Newly Attachment Documents:\n"+msg win32ui.MessageBox(t,"Archive To OpenERP",win32con.MB_ICONINFORMATION) return flag
def CreateCase(self, section, mail, partner_ids, with_attachments=True): import eml flag = False id = -1 try: conn = xmlrpclib.ServerProxy(self._uri+ '/xmlrpc/object') email, path = eml.generateEML(mail) message_id = None session = win32com.client.Dispatch("MAPI.session") session.Logon('Outlook') objMessage = session.GetMessage(mail.EntryID, mail.Parent.StoreID) objFields = objMessage.Fields strheader = objFields.Item(mapitags.PR_TRANSPORT_MESSAGE_HEADERS) strheader = ustr(strheader).encode('iso-8859-1') headers = {} strheader = strheader.replace("\n ", " ").splitlines() for line in strheader: split_here = line.find(":") headers[line[:split_here]] = line[split_here:] temp1 = headers.get('Message-ID') temp2 = headers.get('Message-Id') if temp1 == None: message_id = temp2 if temp2 == None: message_id = temp1 startCut = message_id.find("<") endCut = message_id.find(">") message_id = message_id[startCut:endCut+1] email.replace_header('Message-Id',message_id) id = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'email.server.tools','process_email',section, str(email)) if id > 0: flag = True return flag else: flag = False return flag except Exception,e: win32ui.MessageBox("Create Case\n"+str(e),"Mail Reading Error") return flag