Кратко

  • RFC 1523 намеренно ограничил text/enriched: ASCII-совместимое содержимое должно было оставаться терпимо читаемым без MIME, а минимальный клиент мог снять команды и получить связный текст.
  • Это было управляемое упрощение, а не тождество. Неизвестные эффекты, скрытые параметры, локальная верстка и более богатая часть multipart/alternative могли исчезнуть при полном сохранении видимых слов.

Удаление разметки тоже было разбором

RFC 1523 вышел в сентябре 1993 года со статусом Informational и заменил название text/richtext из RFC 1341 на text/enriched, уточнив формат. Его возможности сознательно не дотягивали до полноценного текстового редактора. Ограничение сокращало выразительность, зато повышало вероятность правильного показа на стороне адресата.

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

Но удаление не сводилось к регулярному выражению. В nofill прекращались обычное заполнение строк и обработка CRLF, а другие enriched-команды продолжали действовать. В verbatim отключались также выравнивание и интерпретация внутренних команд до специального закрывающего токена. Минимальному читателю требовалось знать текущий режим.

Стек был платой за строгого автора

Команды состояли из ASCII-имён без учёта регистра, помещались в угловые скобки и ограничивались 60 символами. Литерал < записывался как <<. Форматирующие окружения следовало закрывать, балансировать и правильно вкладывать.

Составитель письма брал на себя дополнительную строгость. Зато отображатель мог применять стек: сохранить состояние при открытии и восстановить при закрытии. RFC советовал разумно переживать повреждённую структуру, но не определял пересечённые окружения как норму.

Один CRLF превращался в пробел, а последовательность из N — в N−1 видимых переводов строки. Транспорт мог физически перенести длинную строку, не создавая авторского абзаца. Исходные октеты, транспортные строки, восстановленный текст и экран поэтому нельзя считать одной записью.

Неизвестная команда становилась пустым действием

Нераспознанная команда обязана была быть no-op: вложенные слова сохранялись, эффект исчезал. Частные расширения могли начинаться с X-, формальные требовали нового интернет-документа.

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

Среда <param> несла данные для другой команды. Интерпретатор мог понять их или проигнорировать, но не показывать читателю. Минимальная проекция удаляла и разметку, и содержимое параметра. Хорошо читаемая фраза могла лишиться значения, от которого зависело расширение.

Минимальное соответствие требовало распознать литеральный разделитель и специальные режимы, убрать команды с параметрами и применить правила CRLF. Результатом был читаемый текст, но не точная копия шрифтов, отступов, акцентов или авторского намерения.

Экран оставался локальным решением

Шрифты, ширина строки, шаг отступа, выравнивание и совместимость эффектов определялись возможностями получателя. Если совместить команды нельзя, клиент мог предпочесть самую внутреннюю из распознанных. Разные визуальные результаты могли одинаково соответствовать документу.

Для более сложного материала RFC предлагал multipart/alternative: широко доступный text/enriched рядом с богатым представлением вроде ODA. Один клиент выбирал второе, другой — первое. Оба успешно получали сообщение, но читали разные его части.

RFC 1523 утверждал, что механизм не создаёт вопросов безопасности. Это историческая оценка документа, не современное доказательство для всех расширений, реализаций и окружающих MIME-программ. RFC 1563 объявил RFC 1523 устаревшим, затем RFC 1896 сменил RFC 1563. Обновление документов не доказывает одновременную замену установленного кода.

Собранные источники не называют конкретный почтовый клиент, развёртывание или сообщение; они не измеряют распространённость, реакцию пользователей и наблюдаемый результат обработки повреждённого ввода. Они подтверждают правила формата и историю документов, но не поведение определённой установки.

Надёжный след разделяет исходные байты и charset, физические CRLF, стек парсера, решения по известным и неизвестным командам, скрытые параметры, выбранную альтернативу, локальный рендеринг и человеческое понимание. Читаемое упрощение делало потерю переносимой; оно не делало её нулевой.

Источники