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)
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)