Go to mobile version
Туговиков Станислав ([info]latrekc) wrote in [info]ru_webdev,

Грабли при верстке HTML писем

На хабре у меня оказывается недостаточно кармы, чтобы что то писать, поэтому опубликую пока здесь =)опубликовал в блоге «Спам (и антиспам)»

Довольно часто наши клиенты устраивают регулярные рассылки с новостями. Почти всегда их не устраивают текстовые рассылки или простое оформление HTML рассылок. Наши дизайнеры вовсю креативят, а мы потом набиваем шишки при верстке их макетов с корректным отображением во множестве почтовых клиентов.

Ниже список встретившихся нам особенностей и способы их разрешения (как то упорядочить их мне не удалось, поэтому всё идет единым списком)


  • Чтобы не было проблем с кодировками — верстаем в UTF-8, в HEAD нужно указазываем <meta http-equiv="Content-Type" content="text/html; charset=utf-8">;

  • Mail.ru, почты Яндекса и Рамблера вырезают весь css, поэтому верстать надо с помощью HTML3.2;update похоже что это требование (не использовать inline CSS) потеряло свою актуальность с современными парсерами веб почт, впрочем это требует отдельного исследования

  • Mail.ru делает большие отступы у элементов, чтобы их не было надо обернуть письмо в <div id="mailsub">;

  • Mail.ru (и похоже что и Яндекс) превращает отступы(\t) в коде в &nbsp; поэтому код не должен отбиваться табами;

  • В текстовой версии нельзя использовать html entities, потому что это текстовая версия, а не HTML. Также, в текстовой версии нельзя использовать unicode символы, которых нет в windows-1251, т.к. mail.ru зачем то перекодирует письмо в эту кодировку;

  • Outlook 2007 не дает использовать фоновые картинки. Мы правда нашли 1 хак — можно указать background-image для body. Тогда этот Outlook покажет фон. Но хак не работает, если мы используем background-position или background-repeat. В web клиентах этот фон не будет показан, поэтому нужно дублировать его указание — в style у body для Outlook, и в background у "корневой" table для веб клиентов;

  • Outlook 2007 делает поля сверху у элементов типа "div". У "table" с "cellpadding=0 cellspacing=0" таких полей нет;

  • В последних рассылках Диснея нам пришлось полностью отказаться от использования фоновых картинок, т.к. при этом были проблемы с позиционированием картинок поверх фона и делать основной макет состоящим из набора картинок внутри таблицы. Текст при этом тоже включается в картинки, ссылки расставляются с помощью areamap areamap использовать нельзя, т.к. в Gmail по таким ссылкам нельзя кликнуть. Надо нарезать письмо на картинки и сохранять их таблице;

  • В Gmail если у картинки, которая является единственной в ячейке таблицы, появляется 3px отступ снизу, его можно устранить, указав style="display:block" этой картинке;

  • В Рамблер картинки, указанные в теле письма, сливаются на их сервер с подменой ссылок, соответственно если смотреть рассылку отправленную со своих серверов, закрытых извне http авторизаций, то картинки не будут отображаться;

  • В Яндексе ксли тело письма поместить внутрь {strip} (при этом вырезаются все переносы строк), то иногда в теле письма появлятся непонятные переносы, которые могут попасть на значение аттрибута src или href. При этом картинки могут не отображаться, а ссылки — не открываться;

  • Чтобы в IE6 внизу картинок не отображался 3px отступ, надо, чтобы между тегом картинки и тегом закрытия ячейки не было пробельных символов (при этом допускается использование для переноса строки комментария вида:
    <td>
    <img src="" alt="" /><!--
    --></td>

  • Outlook 2007 иногда не ресайзит растянутые картинки. Надо использовать картинки один к одному как указано в макете;

  • Иногда бывают в Outlook 2007, когда картинка, помещённая внутрь какого-то td, у которого задан colspan или rowspan, обрезается вдоль продолжения линии границы соседних ячеек, которые объединяет colspan или rowspan. В этом случае отображается часть целого изображения-картинки. Проблема не решалась без разрезания объединённой ячейки на несколько одиночных и дробления проблемной картинки на несколько частей, каждая из которых занимала бы одну простую ячейку таблицы;

  • На некоторых инсталляциях Outlook письмо без переносов строк начинает корежить очень странным образом. Можно делать без переносов отдельные таблицы, но очень длинных строк надо избегать;

  • В The Bat! при использовании прозрачных гифов прозрачные точки заменяются чёрными.Поэтому "прозрачные" распорки должны заполняться цветом фона, на котором они расположены



Когда я упоминаю название какого то хостера почты, то имеется в виду его веб-интерфейс, а не POP/IMAP

Второй пункт из этого списка более обстоятельно описан в топике «10 рекомендаций по html-верстке электронных писем»

update от [info]sunnyfetis: «есть отличный ресурс, где можно посмотреть поддержку
CSS в том или ином клиенте http://www.campaignmonitor.com/css/ »

  • Post a new comment

    Error

    switch

    Your reply will be screened

  • 20 comments

[info]pepelsbey

October 18 2010, 17:09:49 UTC 1 year ago

Плюсанул ;) Могу даже опубликовать от своего имени на Хабре, думаю аудитория слабо пересекается.

[info]latrekc

October 18 2010, 17:23:03 UTC 1 year ago

готово http://habrahabr.ru/blogs/spam/106387/

[info]infernal_knight

October 18 2010, 17:19:45 UTC 1 year ago

Аттачить надо картинки к письму, а не указывать ссылки на внешние источники. Что б в дизайне использовать.

[info]latrekc

October 18 2010, 17:28:59 UTC 1 year ago

В некоторых случаях это невозможно. Например, МегаФон не хотел увеличения трафика при отправке (20 Кб на письмо против 100-200 при аттаче). А в Диснее это нельзя было сделать технически, т.к. оба их инструмента отправки рассылок не поддерживают аттачи.

[info]sunnyfetis

October 18 2010, 17:22:20 UTC 1 year ago

> Mail.ru, почты Яндекса и Рамблера вырезают весь css, поэтому верстать надо с помощью HTML3.2
ну в общем-то это главное правило при верстке html-писем. хотя инлайн-стили прокатывают практически везде.

> Mail.ru (и похоже что и Яндекс) превращает отступы в коде в ???
там символ пропущен

от себ добавлю, что есть отличный ресурс, где можно посмотреть поддержку CSS в том или ином клиенте http://www.campaignmonitor.com/css/

[info]latrekc

October 18 2010, 17:41:45 UTC 1 year ago

> ну в общем-то это главное правило при верстке html-писем. хотя инлайн-стили прокатывают практически везде.
Хм, похоже что их парсеры стали гораздо лояльнее к верстальщикам. Раньше было обычным делом заменять аттрибуты style, на xstyle или совсем их вырезать. Но остальные баги вполне свежие, поэтому удалять пост не буду

> там символ пропущен
поправил

[info]sunnyfetis

October 18 2010, 17:45:52 UTC 1 year ago

я вас удалять не прошу ничего. просто опытом делюсь

[info]koctbka

October 18 2010, 17:23:04 UTC 1 year ago

Куда тебе там на хабре жать? Пост — хорош!

[info]latrekc

October 18 2010, 17:32:09 UTC 1 year ago

этот вопрос уже разрешен

[info]victorgr

October 18 2010, 17:38:40 UTC 1 year ago

Считаю, что предъявив этот список руководству можно требовать удвоение зарплаты и стакан молока каждый день.

[info]beldmit

October 18 2010, 18:42:47 UTC 1 year ago

Коньяка, а не молока.

Спасибо!

[info]ozzi

October 18 2010, 18:18:46 UTC 1 year ago

офигенно, спасибо )

[info]plumqqz

October 18 2010, 18:20:03 UTC 1 year ago

Давно это было, но какой-то из аутлуков игнорировал аттачи со стилями, если имена аттачей были не в одинарных кавычках (').

[info]_pacak_

October 18 2010, 18:45:22 UTC 1 year ago

Энергии много, но вектора нет.

[info]phpnewbierus

October 18 2010, 19:27:31 UTC 1 year ago

верстаем письма для одного крупного клиента порядка 20 разных в месяц, а иногда в пол месяца.
структура получается жуткая. таблица в таблице в таблице в таблице в таблице в таблице иногда бывает, что бы не было отступов в ие которые неожиданно появляются нужно из проблемных строк удалять все пробелы.
дополнение к вашим правилам - если дизайн вашего письма идет на каком то фоне одноцветном, то нужно таблицу обернуть в див обтекающий таблицу в какуюто определенную ширину, большую чем основная таблица, это для того что бы "браузерные почтовики", почтовые сервисы, отображали этот фон и не было казусов типо какашек под\над закругленными уголками картинок в джепегах, в стэндэлон почтовиках все ок и так.

второе инлайн цсс разрешается. точнее разрешается только он и только в боди.

colspan и rowspan нежелательно использовать вообще. т.к. в большинстве случаев это не дает быстро изменить контент в шаблоне, можно запутаться, куда проще когда таблица в таблице в таблице.

и да, у картинок должны быть обязательно просталвены высота и ширина, аутлуки иногда тянут картинки как им вздумается, даже если внешних факторов на это нету(например не вмещается в ячейку - внешний фактор. хотя он и не должен влиять на размеры картинки).

как то так.
цсс используем поминимуму, форматирование текста и почти все. паддинги и маргины лучше заменять ячейками пустыми определнных величин.

ненавижу табличную верстку.

[info]phpnewbierus

October 18 2010, 19:28:37 UTC 1 year ago

второе инлайн цсс разрешается. точнее разрешается только он и < style > < / style > только в боди.

[info]surger

October 19 2010, 04:49:13 UTC 1 year ago

> mail.ru автоматически добавляет довольно внушительные padding'и для всех td

за месяц было сверстано порядка 20 писем - на майл ру отображается отлично если
<td style="padding:0px;margin:0px;"><img src="part1.jpg"></td>
<td style="padding:0px;margin:0px;"><img src="part2.jpg"></td>

[info]menix

October 19 2010, 10:43:25 UTC 1 year ago

зарубежные мейлсервисы к счастью более-менее нормально едят весь инлайн-цсс, в том числе font, кроме манипуляций с потоком (float, position, negative margins) и бекграундов.
иногда встречаются правда оригинальные приколы, например сочетание "Cloud Computing" ЯхуМейл решил почемуто сделать ссылкой на какойто там справочник. ссылка получилась почти невидна на фоне и с доттед-подчеркиванием, мдя.

воoбще спасибо большое, особенно за эти всякие mailsub и pad_null :)

[info]kost

November 3 2010, 13:58:26 UTC 1 year ago

В почте Рамблера, почему-то, вообще не отображаются картинки из внешних источников? Как лечить?

[info]aamonster

April 14 2012, 13:23:15 UTC 1 month ago

Учил меня в своё время умный человек: ставь редирект html-писем прямо в спам. Вот читаю ваш текст (пришел по ссылке из обсуждения браузеров) - и понимаю, насколько он был прав.

Надо вам вёрстку - сделайте её в нормальном формате (хотя бы pdf) и пришлите attach'ем. А в тексте письма - небольшую пояснительную записку. В plain text.
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…