Таблица .1. Коды Base64
Код символа (6 бит) |
ASCII символ |
Код символа (6 бит) |
ASCII символ |
Код символа (6 бит) |
ASCII символ |
Код символа (6 бит) |
ASCII символ |
0 |
A |
10 |
Q |
20 |
g |
30 |
w |
1 |
B |
11 |
R |
21 |
h |
31 |
x |
2 |
C |
12 |
S |
22 |
i |
32 |
y |
3 |
D |
13 |
T |
23 |
j |
33 |
z |
4 |
E |
14 |
U |
24 |
k |
34 |
0 |
5 |
F |
15 |
V |
25 |
l |
35 |
1 |
6 |
G |
16 |
W |
26 |
m |
36 |
2 |
7 |
H |
17 |
X |
27 |
n |
37 |
3 |
8 |
I |
18 |
Y |
28 |
o |
38 |
4 |
9 |
J |
19 |
Z |
29 |
p |
39 |
5 |
A |
K |
1A |
a |
2A |
q |
3A |
6 |
B |
L |
1B |
b |
2B |
r |
3B |
7 |
C |
M |
1C |
c |
2C |
s |
3C |
8 |
D |
N |
1D |
d |
2D |
t |
3D |
9 |
E |
O |
1E |
e |
2E |
u |
3E |
+ |
F |
P |
1F |
f |
2F |
v |
3F |
/ |
Закодированный выходной поток должен иметь формат последовательности из одной или более строк длиной не более 76 символов каждая. Все разрывы строк или другие символы, не содержащиеся в таблице .1. должны игнорироваться декодирующим программным обеспечением. В данных, представленных в кодах base64, символы отличные от тех, что представлены в таблице .1., разрывы строк и другие пробелы обычно указывает на ошибку передачи, которая вызовет предупреждение или даже выбрасывание сообщения.
Если число бит в группе меньше 24, используется специальная обработка. Неполная битовая группа дополняется нулями справа до 24. Заполнение в конце информационной группы осуществляется с использованием символа "=". Так как последовательность кодов base64 представляет собой поток октетов, возможны следующие случаи:
Так как "=" используется для дополнения, его наличие указывает на то, что достигнут конец массива данных.
Такая уверенность не возможна, когда число переданных октетов кратно трем и нет ни одного символа "=". Любые символы, не входящие в алфавит base64-должны игнорироваться.
Следует позаботиться о том, чтобы использовались корректные октеты в качестве разделителей строк при работе с base64. В частности, разрывы строк должны быть преобразованы в последовательности CRLF до выполнения кодирования base64.
6. Поле заголовка Content-ID
При создании агента пользователя высокого уровня, может быть желательно, допустить одному телу ссылаться на другое. Тела могут быть помечены с помощью поля заголовка "Content-ID", которое синтаксически идентично полю "Message-ID":
id := "Content-ID" ":" msg-id
Подобно значениям Message-ID, значения Content-ID должны генерироваться уникальными.
Значение Content-ID может использоваться для идентификации MIME-объектов в нескольких контекстах, в частности для кэширования данных с доступом через механизм message/external-body. Хотя заголовок Content-ID является обычно опционным, его использование является обязательным в приложениях, которые генерируют данные опционного типа среды MIME "message/external-body". По этой причине каждый объект message/external-body должен иметь поле Content-ID, для того чтобы разрешить кэширование таких данных.