Я действительно смущен, когда дело доходит до формата заголовков Content-Id
в сообщениях.Точный формат заголовка Content-Id
Мне кажется, что только RFC 2045 охватывает формат заголовка, однако кратко:
При построении пользовательского агента высокого уровня, может быть желательно, чтобы одно тело, чтобы сделать ссылку на другой , Соответственно, органы могут быть
помечены с помощью "Content-ID" поле заголовка, который синтаксически
идентичен "Message-ID" поле заголовка:id := "Content-ID" ":" msg-id
Как значения Message-ID, Контент- Идентификационные значения должны быть сгенерированы в всемирно уникальными.
RFC 2822 объясняет формат msg-id
маркеров следующим образом:
Идентификатора сообщения (MSG-ID) подобен по синтаксису к угловому ADDR конструкции без внутреннего CFWS.
сообщение Идентификатор = "Message-ID:" сообщ-идентификатор CRLF
в-ответ-на = "In-Reply-To:" 1 * MSG-ID CRLF
ссылки = «Ссылки :»1 * MSG-ID CRLF
MSG-ID = [CFWS] "<" ID-влево "@" Ид-право ">"[CFWS]
Ид слева = дот-атом-текст/no-fold-quote/obs-id-left
i д-вправо = точка-атом-текст/нет согнутой буквальным/набл-ID-правый
не раз кавычка = DQUOTE * (QText/кавычко пар) DQUOTE
не согнутая буквальным = "[" * (DTEXT/кавычко пара) "]"
Длинная короткая история: она включает в ('@') символ, так же, как Message-Id
заголовок сообщения. Тем не менее, почти все читательские статьи в формате MIME приводят примеры Content-Id
без символа at (включая не-действительно глобальные идентификаторы, такие как myimagecid
или inlineimage001
, а также случайно сгенерированные UUIDS без символа at). Они, несомненно, подчеркнули бы важность символа «@», если это было необходимо, как и в случае с заголовком Message-Id
, верно? Правильно?
Я несколько тестов на реальных почтовых клиентах и посмотреть, как они составляют письма с вложенными встроенными изображениями:
- Thunderbird генерирует идентификаторы с символом. Пример:
[email protected]
- Gmail генерирует идентификаторы без такой символ и без домена.Пример:
ii_abc1234x0_12345ab12abcdefa
я не испытывал какие-либо больше клиентов электронной почты (если кто-то сделали, было бы здорово, чтобы завершить список выше), но эти два уже показывают поразительную разницу. Google не подчиняется стандартам RFC? Это наверняка выглядит вонючим, и я хочу знать, так ли это потому, что я что-то пропустил, или потому, что формат в действительности не так важен (что в долгосрочной перспективе кажется довольно тревожным). Я также заинтересован в проверке того, как многие популярные почтовые клиенты фактически отбрасывают символ «at».
Характеристики обязательно пригодится при составлении писем. Однако, когда я разбираю входящую почту, я должен быть полностью осведомлен о том, какие нарушения стандарта разрабатываются (Gmail) или предназначены для злонамеренного (спама) и действуют соответственно. Я не могу просто отклонить каждое письмо, не соответствующее спецификациям. Теперь, воспользовавшись вашим 17-летним опытом управления этим сумасшедшим домом, не могли бы вы расширить свой ответ и рассказать мне, какие другие части спецификаций могут быть нарушены почтовыми клиентами/серверами? Мне также очень любопытно, что другие спецификации Google нарушают (это не должно быть связано с почтой). – Tomalla
Я немного расспрашивал о разборе заголовков адресов в 2013 году http://jeffreystedfast.blogspot.com/2013/08/why-decoding-rfc2047-encoded-headers-is.html, а затем обнаружил разработчика Thunderbird, который разглагольствовал (много более красноречиво, чем я) о похожих проблемах с электронной почтой, которую вы можете найти на http://quetzalcoatal.blogspot.com/ - у него есть целая серия сообщений в блогах, которые я бы настоятельно рекомендовал прочитать, если вы заинтересованы в реализации анализатора MIME или даже просто парсеров адресов электронной почты. – jstedfast
Другие отклонения GMail от спецификаций почты, которые я обнаружил, были связаны с их реализацией IMAP. Например, они не обрабатывали псевдонимы 'ALL',' FAST' или 'FULL', определенные для использования с командой FETCH несколько лет назад (возможно, это исправлено сейчас, я не уверен). Реализация сервера IMAP сервера GMail прерывается, когда он встречает вложенные мультипакеты с той же границей и возвращает 'BODYSTRUCTURE', как пример в https://github.com/jstedfast/MailKit/issues/205, - в то время как раздражает с точки зрения клиента IMAP, я на самом деле понять и сочувствовать Google по этой проблеме. – jstedfast