Допустимы ли переводы строк в заголовках MIME с использованием закодированных слов? - PullRequest
0 голосов
/ 21 сентября 2018

RFC 2047 определяет механизм кодированных слов для кодирования не-ASCII символа в документах MIME.Он указывает, что пробельные символы (пробел и символы табуляции) недопустимы внутри закодированного слова.

Однако RFC 5322 для разбора электронных документов MIME указывает, что длинные строки заголовка должны быть «свернуты»,Должно ли это свертывание происходить до или после декодирования закодированных слов?

Недавно я получил электронное письмо, в котором часть закодированного текста заголовка содержит новую строку, например:

Header: =?UTF-8?Q?=C3=A5
 =C3=A4?=

Будет ли это действительно?

Конечно, электронные письма могут быть недействительными во многих захватывающих способах, и парсер должен с этим справиться, но интересно знать «правильный» способ.:)

1 Ответ

0 голосов
/ 14 октября 2018

Я неправильно прочитал вопрос и ответил, как будто это был другой пробел.В этом случае пробел появляется внутри слова MIME, а не нескольких, разделенных пробелом.

Подобные вещи явно запрещены .Из введения в формат в RFC2047:

2. Syntax of encoded-words

   An 'encoded-word' is defined by the following ABNF grammar.  The
   notation of RFC 822 is used, with the exception that white space
   characters MUST NOT appear between components of an 'encoded-word'.

А потом в том же разделе:

   IMPORTANT: 'encoded-word's are designed to be recognized as 'atom's
   by an RFC 822 parser.  As a consequence, unencoded white space
   characters (such as SPACE and HTAB) are FORBIDDEN within an
   'encoded-word'.  For example, the character sequence

      =?iso-8859-1?q?this is some text?=

   would be parsed as four 'atom's, rather than as a single 'atom' (by
   an RFC 822 parser) or 'encoded-word' (by a parser which understands
   'encoded-words').  The correct way to encode the string "this is some
   text" is to encode the SPACE characters as well, e.g.

      =?iso-8859-1?q?this=20is=20some=20text?=

   The characters which may appear in 'encoded-text' are further
   restricted by the rules in section 5.

Более ранний ответ

Это явнопозволил.Заголовки со словами MIME должны содержать не более 76 символов и при необходимости складываться.Заголовки в сложенном RFC822 отступе от секунды и любых дополнительных строках.Заголовки RFC2047 должны иметь отступ только в одном пространстве.Пробел между? = В первой строке и =?следует исключить из вывода.

См. пример внизу страницы 12 RFC:

encoded form                                displayed as
---------------------------------------------------------------------
(=?ISO-8859-1?Q?a?=                         (ab)
   =?ISO-8859-1?Q?b?=)

       Any amount of linear-space-white between 'encoded-word's,
       even if it includes a CRLF followed by one or more SPACEs,
       is ignored for the purposes of display.
...