Ограничения на отправку вложений. (в этом издании)

ogranicheniya na otpravku vlozhenij v etom izdanii Сервер PyMailCGI

Если вы этого еще не сделали, прочитайте текст врезки «Ограничения на выгрузку файлов модели CGI в версии 3.1» в конце предыдущей главы. Если коротко, модуль cgi в Python 3.1, а также используемый им механизм синтаксического анализа в пакете email, возбуждает исключение при попытке выгрузить на сервер файл с двоичными данными или с текстом в несовместимой кодировке. К сожалению, поскольку система PyMailCGI, рассматриваемая в этой главе, использует для выгрузки вложений модель CGI, это ограничение означает, что данная система в настоящее время не поддерживает отправку почты с двоичными вложениями, такими как изображения и аудиофайлы. Такая поддержка была в версии для предыдущего издания, выполнявшейся под управлением Python 2.X.

Отправка таких вложений поддерживается обычным настольным приложением PyMailGUI, представленным в главе 14, по той простой причине, что оно имеет возможность напрямую читать данные из локальных файлов (используя двоичный режим, если это необходимо, и преобразовывая данные в формат MIME перед включением их в сообщение электронной почты). Однако, так как веб-приложение PyMailCGI, рассматриваемое здесь, опирается на получение файлов вложений, выгружаемых на сервере через CGI, оно полностью находится во власти ограничений, обусловленных нарушенной поддержкой выгрузки файлов в модуле cgi. Разработка другого модуля взамен cgi — слишком грандиозная задача для этой книги.

Исправление этой проблемы ожидается в будущем, и оно может оказаться выполненным к моменту, когда вы будете читать эти строки. Однако версия PyMailCGI в этом издании, опирающаяся на версию Python 3.1, просто не в состоянии обеспечить поддержку отправки таких вложений, хотя во входящих сообщениях они свободно могут просматриваться. Фактически, несмотря на то, что версия PyMailCGI в этом издании наследует некоторые новые возможности из пакета mailtools, такие как декодирование и кодирование интернационализированных заголовков, данное ограничение на отправку вложений оказывается серьезным препятствием для дальнейшего расширения возможностей этой системы до уровня версии PyMailGUI в этом же издании. Например, политика работы с Юникодом здесь чрезвычайно проста, если не примитивна.

За счет применения некоторых технологий на стороне клиента, таких как AJAX, вполне возможно реализовать отправку двоичных файлов вообще без использования модели CGI. Однако для этого потребовалось бы развертывать фреймворки и использовать технологии, не рассматривающиеся в этой книге, что подразумевало бы совершенно иную, более сложную организацию программы, которая бы избавляла от любой зависимости от ограничений в Python 3.X. Но прежде чем писать новую программу (PyMailRIA?), подождем окончательного вердикта относительно поддержки CGI в Python 3.X.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий