Найти тему
Аналитика данных

Как качать письма с ящика mail с помощью python кода

Оглавление

И так, допустим у вас есть почта на mail.ru. Там накопилось много-много писем, например 30 Гб. Можно попробовать использовать эти письма как холодную базу. Можно проанализировать тексты, домены в адресах, частоту поступлений писем, даты и т.п. Как скачать всю эту корреспонденцию? Вооружимся языком программирования python, но сначала подготовительный этап. Нужно сделать специальный доступ для python-скрипта, чтобы через него получать данные.

Шаг №1. В интерфейсе почты заходим в «Настройки»

Настройки
Настройки

Шаг №2. Выбираем пункт «Все настройки безопасности»

Все настройки безопасности
Все настройки безопасности

Шаг №3. Далее «Пароли для внешних приложений»

Пароли для внешних приложений
Пароли для внешних приложений

Шаг №4. Если к почте не привязан номер мобильника, то нужно привязать

Пароли для внешних приложений
Пароли для внешних приложений

Шаг №5. Добавляем телефон

Номер телефона добавлен
Номер телефона добавлен

Шаг №6. Возвращаемся в раздел «Пароли для внешних приложений»

Жмём «Создать»
Жмём «Создать»

Шаг №7. Задаём название для пароля на скрипт python. Например python_script

Название пароля к python-скрипту
Название пароля к python-скрипту

Шаг №8. Настройка уровня доступа к почте

Настройка доступа по новому паролю
Настройка доступа по новому паролю

Шаг №9. Подтверждаем что вы – это вы

Ввод пароля «старого» пароля на доступ к почте
Ввод пароля «старого» пароля на доступ к почте

Шаг №10. Получение пароля для python-скрипта

Пароль внешнего приложения
Пароль внешнего приложения

Шаг №11. Видим список всех паролей для приложений

Пароли для внешних приложений
Пароли для внешних приложений

Полученный пароль сохраняем в txt-файл keeper.txt. Адрес почты также сохраняем в отдельный txt-файл mail.txt, они нам потом пригодятся в коде. На этом настройки на стороне почтового ящика окончены. Приступаем к написанию кода для скачивания всех писем.

Шаг №12. Пишем скрипт на python в Jupyter Notebook

Скрипт python для выгрузки всех писем с ящика на mail.ru
Скрипт python для выгрузки всех писем с ящика на mail.ru

Все письма сохранятся в указанную вами папку some_folder. Название файлов будет равно UID писем с расширением .eml.

Несколько нюансов

  • Скрипт не удаляет письма с сервера почты! На компьютер выгружаются только копии.
  • Если писем много, порядка 70 000 шт., то они будут долго выгружаться. Конкретно у меня ушло 2 дня на выгрузку такого количества (70 000 шт.) на мобильном интернете.
  • При этом не должно быть выключений инета и засыпаний компьютера, иначе скрипт прервёт свою работу.
  • Если работа скрипта будет прервана, то можно начать выгрузку с последнего письма, дописав скрипт сравнения имеющегося списка файлов с тем, что на почте. Для этого мы и прописывали в названии UID =)

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

Код на GitHub: https://gist.github.com/MikyPo/8eb32cc16f313ec107340ea2d8133368