Подтвердить что ты не робот

Загрузите конкретное письмо от Gmail с помощью Python

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

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

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

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

Я самоучка, и мне трудно настроить script выше, чтобы сделать это.

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

JD

4b9b3361

Ответ 1

Я предлагаю использовать 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 "[email protected]"', '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

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 "[email protected]")'%(dt,))
print data