Итак, допустим мы скачали все письма с почтового ящика, например так, как я описывал здесь.
Теперь из всех этих файлов мы можем получить неочевидные инсайты. Например: кто нам пишет больше всего, с какого домена, как часто, в какой день недели…? А ещё такие письма можно попробовать использовать в качестве холодной базы, конечно же с разрешения абонентов ;)
Но сначала, всю эту информацию нужно хитро вытащить из файлов eml. Сразу хочу отметить, что этот скрипт можно оптимизировать под аналитику сразу на лету, ещё на этапе выкачивания писем с почты. Но, после того как я через час попыток получал какую-либо ошибку и всё начинал с начала, я пришёл к мнению, что всё-таки лучше для все письма выкачать на локальную машину. А если писем не много или просто не хочется делать как я, то дело ваше. Открываем Jupyter Notebook, приступим…
Чтобы замерить время на выполнения скрипта пишем это и добавляем библиотеки.
Инициируем все нужные переменные.
Основной блок обработки писем, в котором мы получаем дату письма, тему, email отправителя, имя отправителя, которое указано в почтовом сервисе отправителя, текст письма и уникальный идентификатор писем UID. Все UID мы аккуратно запишем в txt-файл, чтобы потом можно было понять какие письма мы уже обработали, а какие нет.
После основного блока собираем все данные, которые удалось получить в один датафрейм, сохраняем все имена файлов писем в txt-файл. Также смотрим какой датафрейм у нас получился и делаем несколько преобразований данных.
Сохраняем датафрейм в excel-файл, смотрим сколько получилось строчек таблицы и видим за какое время отработал скрипт.
На этом всё, можно запускать :) Код python на GitHub.
Вместо заключения. Полный список полей, которые можно получить из писем eml
- **Subject** Заголовок письма.
- **From** Адрес отправителя.
- **To** Адрес получателя.
- **Cc** Адрес получателя в копии.
- **Bcc** Адрес получателя в скрытой копии.
- **Date** Дата и время отправки письма.
- **Message-ID** Уникальный идентификатор сообщения.
- **Reply-To** Адрес, на который следует отвечать на письмо.
- **Content-Type** Тип содержимого.
- **Content-Transfer-Encoding** Метод кодирования содержимого.
- **Body** Основное содержимое письма (может быть текстом или HTML).
- **Attachments** Файлы, прикрепленные к письму (названия, типы и т.д.).
- **In-Reply-To** Указывает на идентификатор исходного сообщения, на которое ответили.
- **References** Список идентификаторов сообщений, на которые ссылается это сообщение.