使用Python从Gmail下载特定电子邮件

jon*_*ond 15 python gmail imap

有人可以帮我定制现有的代码示例吗?

我可以从下面的文章中看到如何连接到Gmail和下载内容,但我无法弄清楚如何搜索特定的电子邮件,只下载时间戳和正文?

文章:如何从Gmail下载包含附件的所有电子邮件?

我特别想在过去5天内收到"Alerts@foobank.com"的电子邮件,并下载发送时间和电子邮件正文.然后我将解析这个以确定我需要使用哪些电子邮件.

我是自学成才,并且很难自定义上面的脚本来完成这项工作.

任何帮助深表感谢.谢谢.

JD

Rob*_*wie 18

我建议使用IMAPClient作为IMAP许多更深奥的方面的论文.

以下代码段将根据您的条件提取邮件,将邮件字符串解析为email.message.Message实例并打印DateFrom标题.

from datetime import datetime, timedelta
import email
from imapclient import IMAPClient

HOST = 'imap.gmail.com'
USERNAME = 'username'
PASSWORD = 'password'
ssl = True

today = datetime.today()
cutoff = today - timedelta(days=5)

## Connect, login and select the INBOX
server = IMAPClient(HOST, use_uid=True, ssl=ssl)
server.login(USERNAME, PASSWORD)
select_info = server.select_folder('INBOX')

## Search for relevant messages
## see http://tools.ietf.org/html/rfc3501#section-6.4.5
messages = server.search(
    ['FROM "Alerts@foobank.com"', 'SINCE %s' % cutoff.strftime('%d-%b-%Y')])
response = server.fetch(messages, ['RFC822'])

for msgid, data in response.iteritems():
    msg_string = data['RFC822']
    msg = email.message_from_string(msg_string)
    print 'ID %d: From: %s Date: %s' % (msgid, msg['From'], msg['date'])
Run Code Online (Sandbox Code Playgroud)