Во втором издании этой книги использовалось множество модулей из стандартной библиотеки (rfc822, StringIO и другие) для анализа содержимого сообщений и простой обработки текста для их составления. Кроме того, это издание содержало раздел об извлечении и декодировании вложений, прикрепленных к сообщению, с использованием таких модулей, как mhlib, mimetools и base64.
При работе над третьим изданием эти инструменты все еще были доступны, но, откровенно говоря, они были несколько неудобны и провоцировали появление ошибок. Анализ вложений, например, был достаточно запутанным делом, а составление даже простых сообщений было утомительным (фактически первые печатные выпуски предыдущего издания содержали потенциальную ошибку — в операции форматирования строки отсутствовал один символ \n). Возможность добавления вложений даже не рассматривалась из-за связанных с этим сложностей форматирования. Большинство этих инструментов отсутствовало в составе Python 3.X, когда я работал над четвертым изданием, отчасти из- за их сложности, а отчасти из-за того, что они устарели.
К счастью, в настоящее время ситуация значительно улучшилась. После выхода второго издания в Python появился новый пакет email — коллекция мощных инструментов, автоматизирующих большинство задач, связанных с анализом и составлением сообщений электронной почты. Этот пакет обеспечивает объектно-ориентированный интерфейс доступа к сообщениям и обрабатывает все тонкости структуры текстовых сообщений, упрощая их анализ и составление. Он не только устраняет опасность появления целого класса ошибок, но обеспечивает более сложные способы обработки электронной почты.
С его помощью, например, работа с вложениями становится доступной для простых смертных (и для авторов с ограниченным пространством книги). Это позволило в третьем издании убрать целый раздел, посвященный анализу и декодированию вложений вручную, — эти операции были автоматизированы пакетом email. Новый пакет позволяет анализировать и конструировать заголовки и вложения, генерировать корректный текст электронных писем, применять алгоритмы декодирования и кодирования данных, такие как Base64, quoted-printable и uuen- coded, и многое другое.
В этой книге мы не будем рассматривать пакет email полностью. Он достаточно хорошо описан в руководстве по библиотеке Python. Наша цель здесь — исследовать некоторые примеры его использования, которые вы сможете изучать параллельно с руководствами. Но чтобы дать вам точку опоры, начнем с краткого обзора. В двух словах, основой пакета email является объект Message, который обеспечивает:
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011