2014-11-04 9 views
-1

Я ранее использовал imaplib в Python 3 для извлечения писем из gmail. Однако я хотел бы сгенерировать скрипт, чтобы отличать электронные письма к одному и тому же адресу с разными строками после знака плюса. Например, базовый адрес электронной почты может быть:Python IMAP - Чтение Gmail с помощью «+» по адресу электронной почты

[email protected] 

Тогда я хотел бы отдельно прочитать все письма с адресами:

[email protected], 
[email protected], 
[email protected] 

Поэтому я бы ветер со словарем списков, содержащих конкретный электронные письма. Это работает только для [email protected]. Например:

{'example':[], 
'example_test':[], 
'example_test2':[]} 

В настоящее время я могу получить электронную почту, что мне нужно с помощью этой функции из класса:

def get_emails(self): 
    """Retrieve emails""" 
    self.M = imaplib.IMAP4_SSL(self.server) 
    self.M.login(self.emailaddress,self.password) 
    self.M.select(readonly=1) 
    self.M.select('INBOX', readonly=True) 
    #Yesterdays date 
    date = (datetime.date.today() - datetime.timedelta(self.daysback)).strftime("%d-%b-%Y") 
    print("Selecting email messages since %s" % date) 
    #Retrieve all emails from yesterday on 
    result,data = self.M.uid('search', None, '(SENTSINCE {date})'.format(date=date)) 
    return result,data 
+1

конкретно, что вы можете здесь сделать? что случилось? – acushner

+0

Чтение из IMAP показывает весь почтовый ящик, я хочу отфильтровать результаты, чтобы читать только определенные фильтры, которые были созданы в Gmail. – user2694306

+0

. Вы их отфильтровали в ярлыке/папке в Gmail? Если да, прочитайте эту папку. – Max

ответ

0

Вы должны непосредственно использовать точный адрес электронной почты, который требуется в запросе поиска IMAP. Например, это может быть что-то вроде:

result,data = self.M.uid('search', None, '(SENTSINCE {date})'.format(date=date), 
    ('TO [email protected]'))