Получить только информацию о последнем письме контакта от Imapclient - PullRequest
0 голосов
/ 06 марта 2020

Итак, я новичок в Python, я пишу код и пытаюсь создать код, который будет предоставлять информацию о последнем электронном письме, полученном от контакта. Прямо сейчас то, что у меня есть, дает вывод всей электронной почты, полученной от контакта. Я просто хочу напечатать последнее письмо.

Любые предложения о том, как go об этом?

import email
from imapclient import IMAPClient

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

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

messages = server.search(['FROM', 'email_of_the_contact@gmail.com'])

response = server.fetch(messages, ['RFC822'])

for msgid, data in response.items():
    msg_string = data[b'RFC822']
    msg = email.message_from_string(msg_string.decode())
    print('ID %d: From: %s Date: %s' % (msgid, msg['From'], msg['date']))

1 Ответ

0 голосов
/ 06 марта 2020

Ответ зависит от фактической структуры объекта 'response', которая не совсем понятна, но вы можете попробовать следующее вместо того, чтобы попытаться для l oop:

last_msg_id = list(response.keys())[-1]
data = response[last_msg_id]
msg_string = data[b'RFC822']
msg = email.message_from_string(msg_string.decode())
print('ID %d: From: %s Date: %s' % (last_msg_id , msg['From'], msg['date']))

По сути, вместо того, чтобы перебирать все идентификаторы сообщений и все данные, мы взяли полный список идентификаторов сообщений ('response.keys ()') и просто извлекли последнюю запись в этом списке и использовали это, чтобы тянуть в остальной части детали электронной почты.

...