def parseMessage(message, file): # TODO refactor into own fun: create message if (config.decoder == "mbox"): unixfrom = message.get_from().split(" ") if message['date']: t = parsedate(message['date']) elif (config.decoder == "mbox"): t = parsedate(" ".join(unixfrom[1:])) try: timestamp = datetime.datetime(*t[:6]) except: # pass this message with malformed header return None # fetch sender senders = getaddresses(message.get_all('from', [])) if len(senders): p = fetchPerson( decode_header(senders[0][0]).encode("utf-8"), senders[0][1]) e = fetchEmail(senders[0][1], p) elif (config.decoder == "mbox"): e = fetchEmail(unixfrom[0]) #print "msg",msg return Message(delivered=timestamp, messageid=message['message-id'], sender=e, path=file)
def fetchPerson(person, mail=None): if (not person): return if (mail and personmap.has_key(mail)): fullname = personmap[mail] else: fullname = decode_header(person).encode("utf-8").strip(" '\"") q = Person.select(Person.q.fullname == fullname) try: return q.getOne() except (SQLObjectNotFound): return Person(fullname=fullname)
def fetchPerson(person,mail=None): if(not person): return if(mail and personmap.has_key(mail)): fullname=personmap[mail] else: fullname=decode_header(person).encode("utf-8").strip(" '\"") q=Person.select(Person.q.fullname==fullname) try: return q.getOne() except(SQLObjectNotFound): return Person(fullname=fullname)
def parseMessage(message,file): # TODO refactor into own fun: create message if(config.decoder=="mbox"): unixfrom=message.get_from().split(" ") if message['date']: t=parsedate(message['date']) elif(config.decoder=="mbox"): t=parsedate(" ".join(unixfrom[1:])) try: timestamp=datetime.datetime(*t[:6]) except: # pass this message with malformed header return None # fetch sender senders=getaddresses(message.get_all('from',[])) if len(senders): p=fetchPerson(decode_header(senders[0][0]).encode("utf-8"),senders[0][1]) e=fetchEmail(senders[0][1],p) elif(config.decoder=="mbox"): e=fetchEmail(unixfrom[0]) #print "msg",msg return Message(delivered=timestamp,messageid=message['message-id'],sender=e,path=file)
def parseBody(message, msg): for part in message.walk(): if part.get_content_maintype() == 'multipart': continue print part.get_content_type(), decode_header( part.get_filename('')).encode("utf-8")
def parseHeaders(message, msg): for header in map(str.lower, message.keys()): h = fetchHeader(header) for value in message.get_all(header, []): value = decode_header(value).encode("utf-8") hv = HeaderValue(value=value, msg=msg, header=h)
def parseBody(message,msg): for part in message.walk(): if part.get_content_maintype() == 'multipart': continue print part.get_content_type(), decode_header(part.get_filename('')).encode("utf-8")
def parseHeaders(message,msg): for header in map(str.lower,message.keys()): h=fetchHeader(header) for value in message.get_all(header, []): value=decode_header(value).encode("utf-8") hv=HeaderValue(value=value,msg=msg,header=h)