Esempio n. 1
0
 def resolve_address(self, addr):
     r = {}
     pat = re.compile(re.escape(addr), re.I | re.UNICODE)
     preds = [EMailPredicate('addr:' + addr)]
     corpus = self.get_corpus()
     try:
         selection = Selection(corpus,
                               preds,
                               doc_preds=[DEFAULT_FILTER_WITH_SENT],
                               safe=False)
         for (i, doc) in selection.iter(timeout=1):
             msg = doc.get_msg()
             for (n, a) in unicode_getalladdrs(msg, 'from', 'to', 'cc'):
                 x = formataddr((n, a))
                 if not pat.search(x): continue
                 a = a.lower()
                 if a not in r:
                     r[a] = (1, x)
                 else:
                     (n, x) = r[a]
                     r[a] = (n + 1, x)
             if config.RESOLVE_ADDRESS_NADDRS <= (i + 1): break
     except SearchTimeout:
         pass
     # ambiguous?
     return sorted(r.itervalues(), reverse=True)
Esempio n. 2
0
 def resolve_address(self, addr):
   r = {}
   pat = re.compile(re.escape(addr), re.I | re.UNICODE)
   preds = [ EMailPredicate('addr:'+addr) ]
   corpus = self.get_corpus()
   try:
     selection = Selection(corpus, preds,
                           doc_preds=[ DEFAULT_FILTER_WITH_SENT ],
                           safe=False)
     for (i,doc) in selection.iter(timeout=1):
       msg = doc.get_msg()
       for (n, a) in unicode_getalladdrs(msg, 'from', 'to', 'cc'):
         x = formataddr((n, a))
         if not pat.search(x): continue
         a = a.lower()
         if a not in r:
           r[a] = (1, x)
         else:
           (n, x) = r[a]
           r[a] = (n+1, x)
       if config.RESOLVE_ADDRESS_NADDRS <= (i+1): break
   except SearchTimeout:
     pass
   # ambiguous?
   return sorted(r.itervalues(), reverse=True)