Как прочитать список писем в почтовом ящике на Python и сохранить их...

Как прочитать список писем в почтовом ящике на Python и сохранить их в файловую систему?

Как прочитать список писем в почтовом ящике на Python и сохранить их в файловую систему?

Работа с электронной почтой программными средствами становится актуальной задачей в бизнес-приложениях, автоматизации обработки данных и информационной безопасности. В данном материале рассматривается способ подключения к почтовому серверу по протоколу IMAP, чтения списка писем и сохранения их содержимого в папку на файловой системе с использованием языка программирования Python.

Для выполнения задачи потребуется:

  • Действующий почтовый ящик (например, Gmail).
  • Включённый IMAP-доступ в настройках почтового сервиса.
  • Установленный Python 3.x.
  • Установленные библиотеки: imaplib, email, os.
  • Для подключения к Gmail может потребоваться использование пароля приложения (App Password) при включённой двухфакторной аутентификации.

    Подключение к почтовому ящику

    import imaplib



    # Учетные данные

    EMAIL = 'example@gmail.com'

    PASSWORD = 'your_app_password'

    IMAP_SERVER = 'imap.gmail.com'



    # Подключение к IMAP-серверу

    mail = imaplib.IMAP4_SSL(IMAP_SERVER)

    mail.login(EMAIL, PASSWORD)

    mail.select('inbox')

    Получение списка писем

    # Получение идентификаторов всех писем

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

    email_ids = data[0].split()

    Можно использовать фильтры, например 'UNSEEN' для непрочитанных писем или 'FROM «example@domain.com»' для писем от конкретного отправителя.

    Загрузка и сохранение писем

    import email

    import os



    # Папка для сохранения писем

    SAVE_DIR = 'saved_emails'

    os.makedirs(SAVE_DIR, exist_ok=True)



    # Чтение и сохранение первых 10 писем

    for num in email_ids[:10]:

        result, data = mail.fetch(num, '(RFC822)')

        raw_email = data[0][1]

        msg = email.message_from_bytes(raw_email)



        # Формируем имя файла

        subject = msg.get('Subject', 'no_subject').replace('/', '_')

        filename = f"{num.decode()}_{subject}.eml"



        filepath = os.path.join(SAVE_DIR, filename)



        # Сохраняем письмо как .eml

        with open(filepath, 'wb') as f:

            f.write(raw_email)

    Завершение сессии

    mail.logout()

    Представленный подход позволяет программно получить доступ к содержимому почтового ящика и сохранить письма в формате .eml на локальной машине. Такие файлы могут быть впоследствии обработаны или проанализированы другими средствами. При работе с электронной почтой важно соблюдать меры безопасности — не хранить открытые пароли в коде и использовать безопасные соединения.

    Источник

    НЕТ КОММЕНТАРИЕВ

    Оставить комментарий