
Field name должно состоять только из отображаемых символов кодовой
таблицы US-ASCII, Field body может содержать любые символы кодовой таблицы
US-ASCII. Таких строк в заголовке может быть сколько угодно, флагом,
показывающим окончание заголовка письма, служит пустая строка, т.е.
совокупность символов <CR><LF>. Сразу продемонстрируем пример письма с
заголовками:
Field name: field body<CR><LF>
Field name: field body<CR><LF>
………….
Field name: field body<CR><LF>
<CR><LF>
Произвольное тело письма
В заголовке письма могут применяться различные поля, описанные в
стандарте RFC2822, мы обязательно проведем рассмотрение полей, которые
могут применяться в заголовке письма. Но перед тем как рассматривать
конкретные поля заголовка письма, необходимо хотя бы в общих чертах
познакомиться с синтаксическими правилами, используемыми в RFC2822.
Полное строгое описание этих правил Вы, при необходимости, могут изучить
самостоятельно с помощью самого RFC2822, однако полное строгое описание
синтаксиса может пригодиться Вам разве что в том случае, если они
самостоятельно будут создавать полнофункционального почтового клиента, для
правильного понимания смысла полей заголовка письма достаточно сделать
краткий обзор синтаксиса, к которому мы и переходим.
Рассмотрим формат представления даты и формат представления адресов
в RFC2822. Начинаем с формата представления даты.
date-time = [ day-of-week "," ] date FWS time [CFWS]
day-of-week = ([FWS] day-name) / obs-day-of-week
day-name = "Mon" / "Tue" / "Wed" / "Thu" /
"Fri" / "Sat" / "Sun"
date = day month year
year = 4*DIGIT / obs-year
month = (FWS month-name FWS) / obs-month
month-name = "Jan" / "Feb" / "Mar" / "Apr" /
"May" / "Jun" / "Jul" / "Aug" /
"Sep" / "Oct" / "Nov" / "Dec"
day = ([FWS] 1*2DIGIT) / obs-day
time = time-of-day FWS zone
time-of-day = hour ":" minute [ ":" second ]
hour = 2DIGIT / obs-hour
minute = 2DIGIT / obs-minute
second = 2DIGIT / obs-second
zone = (( "+" / "-" ) 4DIGIT) / obs-zone
Поясняем данную форму записи: совокупность даты и времени (date-time)
записываются строкой, содержащей в себе: опционально день недели,
отделенный от последующего запятой (day-of-week), дату (date) и время (time).
День недели (day-of-week) выбирается из фиксированного набора: Mon, Tue,
Wed, Thu, Fri, Sat, Sun. Дата (date) состоит из трех разделенных пробелами
значений: день (day), месяц (month) и год (year). Год (year) записывается
четырьмя цифрами, месяц записывается как некое имя месяца (month-name),
выбираемое из фиксированного набора: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug,
Sep, Oct, Nov, Dec, день записывается одной или двумя цифрами. Время (time)
записывается двумя частями: время дня (time-of-day) и часовой пояс (zone).
Время дня (time-of-day) записывается как часы (hour), минуты (minute) и