Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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")
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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")
Exemplo n.º 8
0
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)