|
|
|
| Код письма, созданного стандартной почтовой программой, выглидит так:
<html><head><title>123</title></head><body><span style=3D" font-family:'Courier New'; font-size: 9pt;">Svn <span style==3D" font-size: 12pt; color: #ff00ff;"><b>WoWa</body></html>
------------0721201A3146AC75B--
|
Что здесь означает style=3D ? | |
|
|
|
|
|
|
|
для: Владимир55
(01.11.2014 в 17:43)
| | следует смотреть тип тела соответствующей части.
Он наверняка */quoted-printable
В этом методе кодирования (очень грубо) символы = и национальные кодируются своими шестнадцатеричными кодами в виде =XX
Так что это символ = | |
|
|
|
|
|
|
|
для: Trianon
(04.11.2014 в 08:35)
| | Так оно и оказалось:
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Original-To: svn@bow.ru
<html><head><title>BAT эталон</title>
</head>
<body>
<span style=3D" font-family:'Courier New'; font-size: 9pt;">Зд&=
#1088;авствуйте, <spa=
n style=3D" font-size: 11pt; color: #ff00ff;">Svn<span style=3D" font-size:=
9pt; color: #000000;">.</body></html>
|
Вы хотите сказать, что =3D в данной кодировке означает просто знак равенства?
А тогда как же понимать равенство в выражении font-size:=9pt ?
А отсюда проистекет главный вопрос: по каким правилам составлять HTML код письма? | |
|
|
|
|
|
|
|
для: Владимир55
(04.11.2014 в 16:23)
| | а этот знак равенства - в хвосте строки - блокирует перевод строки в этом месте..
Я ж не просто так оговорил - очень грубо.
Вот ссылка на Семенова. 5.6. Транспортное кодирование содержимого Quoted-Printable Это, по-моему, наиболее адекватный текст.
Вот ссылка на ту же википедию и мною причесанный перевод значимого абзаца
http://en.wikipedia.org/wiki/Quoted-printable
====
Кодирование Quoted-Printable
Значение любого 8-битного байта может быть закодировано 3-мя символами: После "=" следуют две шестнадцатеричные цифры (0-9 или A-F), представляющие числовое значение байта .. Например, ASCII символ перевода формата (десятичное значение 12) может быть представлен "= 0С", а знак равенства ASCII (десятичное значение 61) должен быть представлен "= 3D". Все символы, кроме печатных символовASCII или символов конец строки должен быть закодирован таким образом.
Все печатные символы ASCII (десятичные значения между 33 и 126), могут быть представлены сами по себе, за исключением "=" (десятичное 61).
ASCII символы табуляции и пробела, десятичные значения 9 и 32, могут быть представлены сами по себе, за исключением случаев, когда эти символы будут появляться в конце кодируемой строки. В этом случае, их необходимо будет экранировать, в виде "= 09" (TAB) или "= 20" (прбел), либо завершить "=" (мягкий перенос строки) в качестве последнего символа кодированной строки. Это последнее решение справедливо, потому что это препятствует TAB или пробелу оказываться последним символом закодированной строки.
Если закодированные данные включают значимые разрывы строк, они должны быть закодированы как ASCII последовательности CR LF, а не как исходные значения байт, ни прямо, ни через "=" признаки. И наоборот, если значения байт 13 и 10 имеют, кроме конца строки значения (в типах носителей, [3], например), то они должны быть в кодировке = 0D и = 0A соответственно.
Строки Quoted-Printable закодированных данных не должны быть длиннее 76 символов. Чтобы выполнить это требование, не изменяя кодированный текст, мягкие разрывы строк могут быть добавлены по желанию. Мягкий перенос строки состоит из "=" в конце кодированного линии, и не появляется в качестве разрыва строки в декодированного текста. Эти мягкие переносы строк также позволяют кодировать текст без разрывов строк (или содержащие очень длинные строки) для окружения, где длина строки ограничена, такие, как "1000 символов в строке« предел некоторых SMTP ПО, как это предусмотрено RFC 2821.
Немного измененная версия Quoted-Printable используется в заголовках сообщений; см MIME#Encoded-Word.
====== | |
|
|
|
|
|
|
|
для: Trianon
(05.11.2014 в 01:00)
| | Однако, это неожиданное (для меня) открытие существенно усложняет составление кодов HTML писем. Получается, что для этого невозможно использовать ни один из известных редакторов?
Интересно, а кто-нибудь соблюдает эти требования?
Как мне кажется, об этом никто даже не слышал и все составляют письма самым обычным образом. Во всяком случае, опубликованные в сети примеры составлены именно так.
Или я ошибаюсь? | |
|
|
|
|
|
|
|
для: Владимир55
(05.11.2014 в 11:39)
| | >Однако, это неожиданное (для меня) открытие существенно усложняет составление кодов HTML писем. Получается, что для этого невозможно использовать ни один из известных редакторов?
Ничего подобного.
HTML-текст составляется обычным образом, безо всех этих вывертов.
Просто он потом прогоняется через кодирующую функцию.
с учетом, что возможных механизмов транспортного кодирования много (как минимум два)
особых проблем возникать не должно.
механизм := "7bit" ;
/ "quoted-printable"
/ "base64"
/ "8bit"
/ "binary"
/ x-token
|
Скриптом проще всего прогнать поток через base64_encode(), выбрав соответствующий метод в заголовке, но нет ничего сложного, чтоб написать соответствующую quoted_printable_encode()/
Пардон, торможу. В версии php от 5.3.0 такая функция уже есть.
>Интересно, а кто-нибудь соблюдает эти требования?
ну а как иначе-то?
Люди половину текста не увидели бы.
А тот, что на русском - вообще весь.
>Как мне кажется, об этом никто даже не слышал и все составляют письма самым обычным образом.
Составить и закодировать - два разных шага.
>Во всяком случае, опубликованные в сети примеры составлены именно так.
Не все примеры одинаково полезны.
>Или я ошибаюсь?
Как Вы сами считаете?
Ссылку на [русский перевод] документа стандарта я привел выше. | |
|
|
|
|
|
|
|
для: Trianon
(05.11.2014 в 19:17)
| | Ещё раз спасибо!
Я ведь почему написал ">Как мне кажется, об этом никто даже не слышал и все составляют письма самым обычным образом" ? Да потому, что этот же вопрос я еще раньше задал на другом форуме программистов, где его просмотрели больше сотни программеров, и ни один и них не знает того, что Вы рассказали!
Скриптом проще всего прогнать поток через ...
Нюанс в том, что я хотел предоставить возможность администратору редактировать письмо с помощью визуального редактора и на основе одного письма составлять другое. А если его обработать функцией quoted_printable_encode(), то непонятно, как это воспримет редактор при вызове текста. Придется иметь два экземпляра и это несколько усложняет дело, хотя выкрутиться как-то можно.
Поставил лицензионный The Bat и эта прога сформировала письмо вот в таком виде:
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
<html><head><title>The bat Пример</titl=
e>
</head>
<body>
<span style=3D" font-family:'Courier New'; font-size: 9pt;">Зд&=
#1088;авствуйте, <spa=
n style=3D" font-size: 11pt; color: #ff0000;">Svn<span style=3D" font-size:=
9pt; color: #000000;">.</body></html>
|
Здесь кириллица находится в этих кодах с диезами.
Смотрю в пришедшей из разных источников почте и вижу в письмах совсем другое написание кириллицы:
Content-Type: text/plain; charset = "utf-8"
Content-Transfer-Encoding: quoted-printable
=D0=9B=D1=83=D1=87=D1=88=D0=B8=D0=B5 =D0=BF=D1=80=D0=B5=D0=B4=D0=BB=D0=BE=
=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F
|
Почему так получается и как в действительности должно быть?
А вот еще вариант:
Content-Type: text/plain; charset="windows-1251"
Content-Transfer-Encoding: 8bit
Уважаемый(ая) Владимир,
Вам только что ответили в теме, на которую Вы подписались
|
Правильно ли я понимаю, что при указании Content-Transfer-Encoding: 8bit перекодировать текст вообще не нужно?
(Что-то я уже совсем запутался... Просмотрел на тему РНР почты штук сто статей и примеров, и нигде нет даже упоминаниетя, что нужно кодировать тело письма... Словно об этом никто даже не знает...) | |
|
|
|
|
|
|
|
для: Владимир55
(05.11.2014 в 22:07)
| | >Почему так получается и как в действительности должно быть?
Совсем толсто намекаю. Толще уже ну никак не могу.
Набор документов MIME (Multipurpose Internet Mail Extensions; RFC-2045-49)
задает формат сообщений, который предоставляет следующие возможности.
1 Передача текстовых сообщений с символьным набором, отличным от US-ASCII.
2 Передача сообщений нетекстового формата (например, звукового письма).
3 Использование комбинированных сообщений, содержащих разнородные части.
4 Размещение в заголовке информации в символьном наборе, отличном от US-ASCII.
|
Мне так кажется, что Вы интересуетесь именно теми вопросами,
которые выделены в этот синопсис. | |
|
|
|
|
|
|
|
для: Trianon
(06.11.2014 в 01:09)
| | Дело прояснилось.
Большое спасибо! | |
|
|
|