Соответствуют ли эти заголовки электронной почты 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.)