Допустимы ли двоичные символы в заголовках MIME? - PullRequest
1 голос
/ 14 октября 2010

Я работаю на сервере, который обрабатывает электронную почту, и, как часть этого, мы выполняем некоторый анализ / кодирование MIME.Недавно у меня возникла проблема с сообщением, которое в противном случае допустимо, но содержит заголовок Latin-1 в заголовке MIME.Кто-то ввел адрес электронной почты нескольким получателям, содержащим символ латинского алфавита 1, поэтому конверт SMTP содержит только допустимых получателей, но строка «Кому» по-прежнему содержит неверный адрес и неправильно закодированную строку.У меня сложилось впечатление, что это незаконно, и что заголовки MIME должны быть 7-разрядными.8-битные значения в заголовках MIME должны быть закодированы в виде

=?charset?encoding?encoded text?=

Данный заголовок выглядит примерно так:

To: <changéd@someplace.com>, <secondaddress@someplace.com>

Мой вопрос: Это действительный MIME, и я просто не знаю об этом?

Ответы [ 3 ]

3 голосов
/ 14 октября 2010

С RFC2822 , Формат интернет-сообщения , раздел 2.2, Поля заголовка :

Поля заголовка - это строки, состоящие изимя поля, за которым следует двоеточие (":"), за которым следует тело поля, и заканчивается CRLF.Имя поля ДОЛЖНО состоять из печатных символов US-ASCII (т. Е. Символов со значениями от 33 до 126 включительно), за исключением двоеточия.Тело поля может состоять из любых символов US-ASCII, кроме CR и LF.Однако тело поля может содержать CRLF при использовании в заголовках «сворачивание» и «разворачивание», как описано в разделе 2.2.3.Все тела полей ДОЛЖНЫ соответствовать синтаксису, описанному в разделах 3 и 4 настоящего стандарта.

Поэтому любые символы, не входящие в ASCII, являются недопустимыми.

1 голос
/ 14 октября 2010

RFC 822 говорит :

 address     =  mailbox                      ; one addressee
 mailbox     =  addr-spec                    ; simple address
 addr-spec   =  local-part "@" domain        ; global address
 local-part  =  word *("." word)             ; uninterpreted
 word        =  atom / quoted-string     
 atom        =  1*<any CHAR except specials, SPACE and CTLs>
 CHAR        =  <any ASCII character>        ; (  0-177,  0.-127.)

Понял?ваш вариант "строка в кавычках" - =?charset?encoding?encoded text?=

0 голосов
/ 29 марта 2013

Адреса электронной почты, такие как

changéd@someplace.com

, абсолютно законны , если символы закодированы в UTF-8 и , если сервер поддерживает SMTPUTF8, расширение SMTP,Сервер объявляет о поддержке, отвечая на EHLO ключевым словом SMTPUTF8:

250-SMTPUTF8

Клиент использует расширение, добавляя параметр SMTPUTF8 в команду MAIL:

MAIL FROM:<changéd@someplace.com> SMTPUTF8

К сожалению, естьв настоящее время очень мало поддержки для этого расширения.

См. RFC 6531 для получения дополнительной информации: http://tools.ietf.org/html/rfc6531

...