Используемые термины: Python, IMAP, POP3, SMTP.
В данной инструкции мы рассмотрим фрагменты скриптов на Python 3 для работы с почтой. Для примера мы выполним:
В качестве операционной системы нами будет использоваться Linux, однако такой же набор команд будет работать на Windows.
Ставим python в систему одной из команд.
а) На системах RPM (Red Hat, CentOS, Fedora):
yum install python3
б) На системах DEB (Debian, Ubuntu):
apt-get install python3
Для нашей работы будет использоваться скрипт, написанный на python. Создадим каталог, в котором он будет находиться:
mkdir /scripts
Создадим сам скрипт:
vi /scripts/mail.py
#!/usr/bin/env python3# -*- encoding: utf-8 -*-
* в данном примере мы создали скрипт mail.py с двумя строчками — шебангом и определением кодировки.
И, на последок, даем разрешение на выполнение скрипта:
chmod +x /scripts/mail.py
Если мы планируем использовать почту на бесплатном хостинге, например, MAIL.RU, Яндекс, GMAIL, то необходимо настроить почтовый ящик для возможности подключения к нему по IMAP/POP3.
Подробнее процесс описан в статье Настройка почты GMAIL и Яндекс для подключения по IMAP или POP3.
В случае использования собственного сервера, нам необходимо создать почтовую учетную запись или использовать имеющуюся.
Разберемся, как можно использовать python для отправки почты. Мы попробуем учесть все правила отправки сообщений, чтобы минимизировать попадание в СПАМ. Также в нашем примере письмо будет с вложением.
Фрагмент кода:
Описание скрипта:
Разобьем процесс на несколько шагов.
Чтение электронной почты начинается с подключения к почтовому ящику на сервере. Для этого используем такой код:
Пробуем запустить наш скрипт:
/scripts/mail.py
… он ничего не должен вернуть. В противном случае, изучаем ошибку — как правило, это может быть ошибка доступа.
Найдем письмо, с которым будем работать — в данном примере, последнее:
Пробуем запустить скрипт — он тоже должен вернуть пустой ответ. Мы можем добавить в конец нашего скрипта такую строку:
…print(raw_email_string)
… это позволит увидеть тело письма. После проверки удаляем строку.
Если нам нужны заголовки письма, выполняем такой блок кода:
* в данном скрипте приведен пример нескольких заголовков. Весь массив с заголовками можно вывести строкой print(email_message).
Получаем текст письма:
С помощью Python по IMAP мы можем копировать почтовые сообщения, удалять их, перемещать, а также управлять папками на сервере.
Для копирования предусмотрен специальный метод copy:
mail.copy(mail_id, ‘INBOX/Completed’)
* в данном примере мы должны вызвать метод copy для нашей почтовой сессии mail; для копирования конкретного письма мы передаем его идентификатор (mail_id); копия письма окажется в каталоге Completed, который находится в каталоге Входящие (INBOX).
Для удаления письма, сначала необходимо пометить его на удаление. После выполнить удаление помеченных почтовых сообщений:
mail.store(mail_id, ‘+FLAGS’, ‘\\Deleted’)mail.expunge()
* в данном примере мы вызываем метод store сессии mail, устанавливаем флаг Deleted для письма с идентификатором mail_id.
Перемещение можно выполнить копированием с последующим удалением:
copy_res = mail.copy(mail_id, ‘INBOX/Completed’)if copy_res[0] == ‘OK’: mail.store(mail_id, ‘+FLAGS’, ‘\\Deleted’) mail.expunge()
* в данном примере мы копируем письмо с mail_id в INBOX/Completed; если копирование выполнено успешно, то письмо помечается на удаление и удаляется окончательно.
Пример скрипта с подключением к почте, поиском писем в папке «Входящие», перебором всех писем с последующим их переносом в корневой каталог Completed:
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies