Задать вопрос
@expp

Как сделать парсинг почты на python?

Добрый вечер.

Мне на почту приходят определенные письма, в названии которых указывается определенный код, который означает, что пришло по той теме, которая и соответствует этому коду. Мне нужно парсить эти письма и получать на выходе только письма с определенным кодом.

Подскажите, пожалуйста, как сделать это.
  • Вопрос задан
  • 8593 просмотра
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
@del4pp
На пайтоне есть библиотека imaplib, которая позволяет получать письма с вашего ящика через IMAP и парсить их . Ниже мой код который я создавал для себя для такой же задачи.

def read(sender_of_interest=None):
    imap = imaplib.IMAP4_SSL("imap.gmail.com", 993)
    imap.login('Почта', 'пароль')
    imap.select('INBOX')
    if sender_of_interest:
        status, response = imap.uid('search', None, 'UNSEEN', 'FROM {0}'.format(sender_of_interest))
    else:
        status, response = imap.uid('search', None, 'UNSEEN')
    if status == 'OK':
        unread_msg_nums = response[0].split()
    else:
        unread_msg_nums = []
    data_list = []
    for e_id in unread_msg_nums:
        e_id = e_id.decode('utf-8')
        _, response = imap.uid('fetch', e_id, '(RFC822)')
        html = response[0][1].decode('utf-8')
        email_message = email.message_from_string(html)
        data_list.append(email_message.get_payload())
    for elem in data_list:
        clean_html(elem)


а дальше все просто:
if "ключевое слово" in массив_с_сообщениями[индекс сообщения]:
...то что надо сделать если ключевое слово найдено.

ну и в цыкле понятное дело
Ответ написан
Комментировать
@PoMaXapi
mojno vot tsk:

import imaplib

email = '///...'
password = '///...'

mail = imaplib.IMAP4_SSL('imap.yandex.ru')
mail.login(email, password)
mail.list()
mail.select("inbox")

result, data = mail.search(None, "ALL")

ids = data[0]
id_list = ids.split()
latest_email_id = id_list[-1]

result, data = mail.fetch(latest_email_id, "(RFC822)")
raw_email = data[0][1]
raw_email_string = raw_email.decode('utf-8')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы