Чтение электронной почты Gmail на Python - PullRequest
1 голос
/ 11 апреля 2019

Я пытаюсь создать простой скрипт, чтобы проверить мою почту Gmail на наличие писем с определенным заголовком.Когда я запускаю эту программу на Python 3.7.3, я получаю следующие данные: ('OK', [b'17']).

Мне нужен доступ к телу электронной почты в Python.Я просто не уверен, что делать с имеющимися у меня данными.

Вот мой текущий код:

import imaplib
import credentials

imap_ssl_host = 'imap.gmail.com'
imap_ssl_port = 993
username = credentials.email
password = credentials.passwd
server = imaplib.IMAP4_SSL(imap_ssl_host, imap_ssl_port)

server.login(username, password)
server.select('INBOX')

data = server.uid('search',None, '(SUBJECT "MY QUERY HERE!")')
print(data)

Результат выполнения кода:

('OK', [b'17'])

Я знаю, что это немного грубо, но я все еще учусь, поэтому любой совет, который вы можете помочь мне улучшить, был бы очень признателен!

1 Ответ

1 голос
/ 11 апреля 2019

Сначала необходимо составить список содержимого выбранного почтового ящика и получить один из элементов. Вы можете сделать что-то вроде этого (также проверьте ссылку, предложенную @asynts)

    imap.select('Inbox')
    status, data = imap.search(None, 'ALL')
    for num in data[0].split():
      status, data = imap.fetch(num, '(RFC822)')
      email_msg = data[0][1]

Если вам нужны только определенные поля в теле, вместо анализа RFC вы можете отфильтровать такие поля, как:

    status, data = imap.fetch(num, '(BODY[HEADER.FIELDS (SUBJECT DATE FROM TO)])')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...