Соответствуют ли эти заголовки электронной почты RFC-2047?

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

Изучив эти электронные письма, я обнаружил, что, очевидно, существует локальная служба веб-почты, которая отправляет имена вложений следующим образом:

Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document;
    name*="UTF-8''%D7%A2%D7%A8%D7%9B%D7%AA%20%D7%94%D7%A8%D7%A9%D7%9E%D7%94%20TCMP.docx"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
    filename*=UTF-8''%D7%A2%D7%A8%D7%9B%D7%AA%20%D7%94%D7%A8%D7%A9%D7%9E%D7%94%20TCMP.docx

Это абсолютно недопустимый заголовок MIME согласно RFC 2047. Он не имеет печатного идентификатора в кавычках (?Q?), Различные байты кодируются с% вместо =, а все закодированное слово должно начинаться с =? и заканчиваться на?=, а это не так.

Когда я исправляю это в правильном формате, вот так:

Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document;
    name="=?UTF-8?Q?=D7=A2=D7=A8=D7=9B=D7=AA=20=D7=94=D7=A8=D7=A9=D7=9E=D7=94=20TCMP.docx?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
    filename=?UTF-8?Q?=D7=A2=D7=A8=D7=9B=D7=AA=20=D7=94=D7=A8=D7=A9=D7=9E=D7=94=20TCMP.docx?=

тогда заголовок будет правильно декодирован.

Может кто-нибудь сказать мне, если я что-то здесь упускаю? Есть ли новое расширение для RFC2047, которое учитывает эти заголовки, или они просто полностью неверны?

1 ответ

Как упомянуто @alex-k, name*= синтаксис определен в RFC2231, который был написан после RFC2047.

Но ответить на вопрос, как задано, нет. Ни один из наборов заголовков не соответствует RFC2047.

*= Синтаксис не существовал на момент написания RFC2047, поэтому оригинальные не соответствуют.

Второй набор с MIME-кодированными словами недопустим, поскольку он нарушает правила о том, где MIME-кодированные слова разрешены в соответствии с разделом 5 RFC2047, в частности оба эти правила:

   + An 'encoded-word' MUST NOT appear within a 'quoted-string'.

   + An 'encoded-word' MUST NOT be used in parameter of a MIME
     Content-Type or Content-Disposition field, or in any structured
     field body except within a 'comment' or 'phrase'.

(Эти правила не являются последовательными в RFC.)

Другие вопросы по тегам