Загрузите конкретное письмо из Gmail, используя Python - PullRequest
14 голосов
/ 08 июля 2011

Может кто-нибудь помочь мне настроить существующий пример кода?

Из следующей статьи видно, как подключиться к gmail и загрузить контент, но я не могу понять, как искать конкретное письмо и загружать только метку времени и текст?

СТАТЬЯ: Как я могу загрузить все электронные письма с вложениями из Gmail?

Я специально хочу получить письма от "Alerts@foobank.com" за последние 5 дней и загрузить время отправки и текст письма. Затем я проанализирую это, чтобы определить, какие электронные письма мне нужно использовать.

Я самоучка и с трудом настраиваю приведенный выше скрипт для этого.

Любая помощь очень ценится. Спасибо.

JD

Ответы [ 2 ]

18 голосов
/ 08 июля 2011

Я предлагаю использовать IMAPClient , поскольку он охватывает многие более эзотерические аспекты IMAP.

Следующий фрагмент будет извлекать сообщения в соответствии с вашими критериями, анализировать строки сообщений в экземплярах email.message.Message и печатать заголовки Date и From.

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'])
2 голосов
/ 08 июля 2011
import imaplib
from datetime import datetime, timedelta

obj = imaplib.IMAP4_SSL('imap.gmail.com',993)
obj.login('username','password')
obj.select()

today = datetime.today()
cutoff = today - timedelta(days=5)
dt = cutoff.strftime('%d-%b-%Y')
typ, data = obj.search(None, '(SINCE %s) (FROM "Alerts@foobank.com")'%(dt,))
print data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...