Выбрать главу

RFC 822 определил исходной формат для текстовых сообщений Интернета. Содержание почтового сообщения состоит из последовательности строк, завершающихся <CR><LF>. Максимальная длина каждой строки (включая <CR><LF>) определена в 1000 символов.

Как должны кодироваться для пересылки различные типы содержания сообщений MIME? Методы кодирования определены отдельно для каждого типа. Например, для SMTP можно использовать:

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

■ Эффективный способ кодирования, когда получатель поддерживает такой способ.

Методы кодирования представлены в таблице 16.3. Если используется не обычный метод NVT USASCII, а другой, то он должен быть явным образом определен в заголовке Content-Transfer-Encoding. Например:

Content-Transfer-Encoding: base64

Content-Transfer-Encoding: Quoted-printable

Таблица 16.3 Методы копирования

Метод Описание
7bit Обычные строки текста NVT USASCII.
quoted-printable Содержимое по большей части представляет собой обычный текст ASCII, но дополнительно имеется несколько особых символов. Каждый такой символ представлен специальной последовательностью обычных текстовых символов.
base64 Все содержание отображается к виду, представленному обычными символами.
8bit Сообщение организовано как последовательность строк, заканчивающихся на <CR><LF> и имеющих длину не более 1000 символов. Однако могут быть включены 8-разрядные коды.
binary Правильное представление двоичных данных.
x-token-name Любой экспериментальный метод кодирования должен иметь название, начинающееся с "х".

16.13.5 Метод кодирования указанными печатными символами

Метод кодирования указанными печатными символами (quoted-printable encoding method) используется для сообщений, содержащих только небольшое число символов, не принадлежащих основному множеству ASCII. Эти символы отображаются в специальные последовательности, в то время как большая часть сообщения остается в своей естественной форме. Кодирование выполняется как:

= шестнадцатеричный код для символа

Например, символ перевода формата (X'0C) будет закодирован как =0C.

16.13.6 Метод кодирования Base64

Метод кодирования Base64 преобразует любой тип данных к большему в 3 раза количеству текстовых символов. Данные разделяются на части по три 8-разрядных, байта. Например:

10001000 00110011 11110001

Для преобразования эта последовательность сначала разделяется на четыре 6-разрядные группы:

100010 000011 001111 110001

Каждая группа интерпретируется как число:

34 3 15 49

Полученные числа заменяются соответствующими символами из таблицы 16.4.

Таблица 16.4 Кодирование Base64

Значение Код Значение Код Значение Код Значение Код
0 A 16 Q 32 g 48 w
1 В 17 R 33 h 49 X
2 С 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 I 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 о 56 4
9 J 25 Z 41 p 57 5
10 К 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 с 44 s 60 8
13 N 29 d 45 t 61 9
14 О 30 e 46 u 62 +
15 P 31 f 47 V 63 /