Суть протоколов электронной почты, как и FTP, в конечном счете заключается в форматировании команд и потоков байтов, передаваемых через сокеты и порты (порт 110 для POP; 25 для SMTP). Независимо от природы содержимого и вложений сообщения электронной почты — это чуть больше, чем простые строки байтов, отправляемые и принимаемые через сокеты. Но, так же, как для FTP, в Python есть стандартные модули, которые упрощают все стороны обработки электронной почты:
• poplib и imaplib — для получения электронной почты
• smtplib — для отправки
• пакет email — для анализа и конструирования сообщений электронной почты
Эти модули связаны между собой: для обработки нетривиальных сообщений обычно используется пакет email, позволяющий проанализировать текст сообщения, полученного с помощью poplib, и сконструировать сообщение для отправки с помощью smtplib. Пакет email также позволяет решать такие задачи, как анализ адресов, форматирование даты и времени, форматирование и извлечение вложений, а также кодирование и декодирование содержимого сообщения электронной почты (например, uuencode, Base64). Для решения более специфических задач применяются другие модули (например, mimetypes для отображения имен файлов в их типы и обратно).
В следующих нескольких разделах мы исследуем интерфейсы POP и SMTP для получения и отправки почты на серверы и интерфейсы пакета email анализа и конструирования сообщений электронной почты. Другие интерфейсы электронной почты в Python аналогичны и описаны в справочном руководстве по библиотеке Python.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011