我以前在Python 3中使用过imaplib来从gmail中提取电子邮件。然而,我想生成一个脚本,用加号后的不同字符串来区分同一地址的电子邮件。例如,基本电子邮件地址可以是:
example@gmail.com
然后我想单独阅读所有带有地址的电子邮件:
example+test1@gmail.com,
example+test2@gmail.com,
example@gmail.com.
因此,我最终会得到一本包含特定电子邮件的列表词典。这仅适用于example@gmail.com
。例如:
{'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
您应该在IMAP搜索请求中直接使用您想要的确切邮件地址。例如,它可能类似于:
result,data = self.M.uid('search', None, '(SENTSINCE {date})'.format(date=date),
('TO example+test1@gmail.com'))