Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
modem.pdf
Скачиваний:
26
Добавлен:
17.05.2015
Размер:
3.06 Mб
Скачать

Content Transfer Encoding: quoted printable то

тело письма будет выглядеть так:

=D5=EF=FO=FE=E2 =F2=F4=EA=FE=E5=E6'=OA=

=ОА= ,

=СС=Е2=ЕС =FE=EA=E4=EA=F9=FB, =EE=EF=E5 =E6=E2=EC=FO=EB =

=F5=F2^FO=F5=FO=F7 =FO=F7=FC»E5=EF=EA=F3

К этому методу шифровки приложимо все то, что сказано выше о base64: если программа получателя поддерживает MIME, то письмо будет раскодировано автоматически и получатель смо жет прочесть его, даже не подозревая о подвохе. Если же поддержки MIME в почтовой программе нет (а таких программ еще немало), то добраться до текста письма вашему адресату бу дет более чем затруднительно. К счастью, обычно почтовые программы позволяют отключать для отправляемых писем этот способ шифровки; соответствующая опция чаще всего так и называется — «Quoted Printable».

Подробное описание процесса русификации множества почтовых программ для разных операционных систем, а также ссылки на всевозможные утилиты перекодировки, шрифты и драйверы клавиатуры вы найдете в Интернете по адресу http:// www. nagual.pp.ru/ache/koiS/html (если у вас нет прямого подключения, на стр. 261 вы узнаете, как можно получить WWW документ, зная его адрес, по почте).

Посылка бинарных файлов

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

И решается эта проблема сходными методами. Если почтовая программа поддерживает упоминавшийся уже стандарт MIME (Multipurpose Internet Mail Extensions, «Многоцелевое расширение интернетовской почты»), она, скорее всего, воспользуется алгоритмом base64 — одним из тех алгоритмов, которые можно было бы назвать «архиваторами наоборот». И в самом деле, если архиватор преобразует текстовые файлы — так, что они занимают меньше места, — за счет использования непечатаемых символов ASCII, то алгоритмы типа base64, наоборот, «излагают содержа

ние» исходного файла только печатаемыми символами, попутно увеличивая его объем.

Однако поддержка MIME не ограничивается использованием base64. Закодировав подлежащий отправке бинарный файл, почтовая программа должна занести соответствующую информацию в поля заголовка, чтобы программа получателя смогла без труда раскодировать файл и знала, что с ним после этого следует делать. Поле Content Transfer Encoding при этом указывает на метод кодирования (base64), а поле Content Type содержит информацию о типе закодированного файла (а для многих типов — и некоторую служебную информацию, например имя файла). Так, если вы посылаете в письме изображение в формате GIF, в заголовке будет стоять:

Content Type: image/gif; name="logo.gif"

Content Transfer Encoding: base64

Теперь программа получателя не только сможет рас кодировать пришедший файл, вернув его в исходную бинарную форму, но и будет знать, под каким именем его записать и даже

— какую программу вызвать на обработку этого файла (если у пользователя в настройках операционной системы записано, что файлы формата GIF обрабатываются, к примеру, программой Photoshop).

Именно номенклатура типов данных и составляет основное содержание стандарта MIME. Так, как в нашем примере, программа сможет указывать только зарегистрированные MIME ТИПЫ, из которых, помимо image/gif, мы уже знакомы с типом text/plain, применяющимся для простых ASCII текстов (стр. 230). Если же тип отправляемого файла не относится к зарегистрированным, программа поставит в заголовке «applica tion/octet stream», что означает «просто какой то набор байтов».

Разобранный выше пример предполагает, что в теле письма не содержится ничего, кроме столбца букв и цифр, представ ляющего собой закодированный по base64 бинарный файл. Но что делать, если вы хотите сопроводить посылаемый файл собственноручной припиской? На этот случай MIME предусматривает возможность создания «составных» писем из нескольких частей. При этом в заголовке письма стоит следующее:

Content Type: multipart/mixed; boundary= 4Е611А4Е6А69"

чти в переводе на русский язык означает: письмо состоит из нескольких частей разных типов, причем границы («boundary») между частями помечены строками символов "———— 4Е611А4Е6А69". Вот как будет выглядеть тело такого письма:

This is a multi part message in MIME format.

4Е611А4Е6А69

Content Type: text/plain; charset=koi8 r

Content Transfer Encoding: 8bit

Привет! Вот тебе обещанный логотип.

dk

„ „ 4Е611А4Е6А69

Content Type: image/gif; name^'logo.gif" Content Transfer Encoding: base64 Content Disposition: inline; filename^'logo.gif"

R01GODdhxgHtAfcAAP////z19vr6/Pr6+/nr7Pbg4/'X2+PTW2vHx9fHM OfOx907Cx+2t8ezs 8eu4vuittefo7ufo7eWj q+OZoulj 6uGTneCPmd3f593f5t2FkNp6htna49j a49dwfdTW4NRm dNPV39Jca8/R3M9SYcxHWMrN2crM2crM2Mk9T8YzRcXI1sXI1cXH lcMpPMHDOsEfM8DDOsDD

Первая фраза, «This is a multi part message...», вставляется' почтовой программой отправителя на тот случай, если программа получателя не будет знакома с MIME и покажет своему пользователю текст письма «как есть» — т. е. ровно в том же виде, что и на этой странице книги. Если же программа чтения почты поддерживает MIME, она проигнорирует все вплоть до первого вхождения строки разделителя.

Сразу после разделителя, открывающего очередную часть, располагаются «локальные» MIME заголовки, указывающие на тип каждой части письма. Согласно этим сведениям, первая часть письма в нашем примере содержит русский текст в кодировке КОИ8, а вторая — изображение.в формате GIF из файла logo.gif. То же самое письмо в окне почтовой программы, поддерживающей MIME и умеющей к тому же выводить на экран изображения из GIF файлов, показано на рис. 30.

До того как стандарт MIME получил широкое распространение, вместо base64 употреблялся другой похожий алгоритм, называе мый uuencode/uudecode. Достоинство uuencode — то, что этот метод приводит к менее значительному увеличению размера кодируемого файла, чем base64, а главный недостаток — то, что он не включен в стандарт MIME и потому не может работать пол ностью автоматически. Если закодировать по uuencode и вставить в письмо бинарный файл некоторые почтовые программы могут почти автоматически, то, чтобы извлечь его оттуда, вам придется как минимум показать программе место, откуда начинать раскодировать (а поскольку большие бинарные файлы при кодировке часто разбиваются на части, то вам придется еще потрудиться, собирая эти части воедино). Вот как выглядит начало бинарного файла, закодированного по алгоритму uuencode:

begin 644 BOOK.ARJ

M8.HH' 'Xld'O'O' • )==75®P'@' •••"•••"• ......... .$)/3TLN05).' • «2G

M<0'M' • '@ZBO' '@4'•'•' ' C1'4,>2E$" ,R\' ' ••<WIO]' "»• • " . 2U65»' '5 MX VES»' •

•'BtWB^ Qa+OJZSSZF^RO.YROZ'^UZISD'^PXCS'IOA M<V= )'NPW=9%Q.8@?2=(F

\XX"7>%RE767]E_7=U59"ttEU59>YFEX\OS????4

M__ZJN6V.X1R$>1(A"_«[W:UMIN[W</__3SZ;N:JN:B R>FNF:J?HGTOQ34F

Методом uuencode следует пользоваться, когда вы подо зреваете, что почтовая программа получателя не поддерживает MIME. К сожалению, этот метод нельзя рекомендовать на все случаи жизни, так как многие программы с поддержкой MIME, наоборот, не имеют никакого представления об uuencode. (Если вы пользуетесь такой программой, существуют отдельные ути литы для шифровки/расшифровки файлов по uuencode.) А лучше всего в любом случае, прежде чем посылать кому то бинарный файл, выяснить, с каким алгоритмом шифрования может работать почтовая программа вашего адресата.

Размер закодированного файла больше размера исходного примерно на 30% в случае uuencode и 40% в случае base64. Поэтому, когда вы посылаете хоть сколько нибудь сжимаемые бинарные файлы (например, ехе программы), желательно перед обработкой кодировщиком их заархивировать, чтобы уменьшить размер письма. Более того, даже для посылки обычного текста большого объема имеет смысл файл с этим текстом заархивировать, а затем закодировать — размер письма будет меньше, чем объем исходного текста. (Конечно, вы должны быть уверены, что получатель письма сможет произвести обратные действия — декодирование и разархивирование.)

Uudecode для бедных

Отдельные утилиты и целые почтовые программы, поддерживающие как uuencode/uudecode, так и base64, совсем несложно

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]