Тайны и секреты компьютера

Вложенные файлы


Изначально система электронной почты предназначалась для обмена исключительно текстовыми сообщениями и не могла пересылать файлы, приложенные к письмам, так как последние обычно являлись архивами и представляли собой двоичные данные, то есть не раскладывающиеся на удобовразумительную последовательность символов.

Безусловно, можно было принудительно разбить последовательность бит в файле на группы из восьми бит и попытаться перевести его в текст (эксперимент может проделать каждый, переименовав какой-либо исполняемый файл или архив в файл с расширением ".txt" и загрузив его в Microsoft Word 97 или Microsoft Word 6.0), но в этом случае в таком тексте было бы большое количество символов с кодами меньше 33 и больше 127, из которых со вторыми могла бы возникнуть проблема обрезания старшего бита в семибитных почтовых серверах, описанная выше, а первые могли очень своеобразно отобразиться в почтовой программе. Кроме того, символы с кодами, большими 127, имели шанс подвергнуться перекодировке в российских почтовых серверах. Ясно, что после подобных преобразований вряд ли пересылаемая программа бы заработала, а архив открылся - их код стал бы практически невосстановимо испорченным.

Поэтому были разработаны специальные системы вложений двоичных файлов в почтовые сообщения, основанные на конвертации двоичных данных в набор символов с кодами от 33 до 127, могущий быть впоследствии подвергнутым обратному преобразованию в исходные двоичные данные. Систем такой конвертации было разработано несколько, самые употребительные из них - uuencode, base64, quoted-printable.

Почтовая программа, умеющая работать с вложениями, конвертировала перед отправкой письма вложенные файлы в одну из таких кодировочных систем, помещая перед вложением соответствующее указание на такую конвертацию, а при получении письма с вложениями просматривала текст письма и при нахождении вставки фрагмента, закодированного как, например, uuencode или base64 (что определялось по специальному указателю в тексте письма), превращала этот фрагмент в исходный двоичный файл.
Сейчас все общеупотребительные почтовые программы умеют это делать.

Вот, к примеру, фрагмент письма с вложением, просматриваемый с помощью функции Microsoft Outlook Express "Свойства-Подробности-Исходное сообщение" (рис.13.8).



Рис.13.8. Фрагмент письма с вложением.

Все как на ладони. Указано, что приложено к письму - архив Zip с названием 999.zip, указан способ конвертации вложения - base64, а дальше идет набор символов первой половины кодовой таблицы, за который можно быть уверенным, что он пройдет через любые почтовые серверы неизмененным. Outlook Express при получении такого письма распознает наличие вставки base64, отобразит вложенный файл на панели вложений и позволит сохранить его на жесткий диск или прочитать, подвергнув обратному преобразованию из base64.

Если вложенный файл является текстовым (наиболее частый случай - HTML-вариант письма, который может быть составлен, к примеру, с помощью программы Outlook Express), то для него, помимо способа конвертации (обычно quoted-printable), указывается еще и кодировка исходного текстового файла для того, чтобы почтовая программа получателя, раскодировав его, могла его правильно отобразить (рис.13.9). 



Рис.13.9. Указание на кодировку текстового вложения. В данном случае текстовое вложение еще подвергнуто преобразованию quoted-printable.

Иногда встречаются семибитные сервера, которые не "обрезают восьмой бит", а попросту обнуляют все символы с кодами, большими 127. В этом случае пришедшее письмо выглядит как набор вопросительных знаков, и никакая перекодировка не помогает - информация об исходных кодах символов оказывается полностью потерянной. В этом случае использование системы конвертации вложений для самого текста письма позволит ему проходить и по таким почтовым серверам.


Содержание раздела