В идеальном мире отправленное и полученное пользователем письмо должны выглядеть одинаково. Но почтовые клиенты вносят свои изменения в отображение рассылок. Именно поэтому каждому верстальщику необходимо знать об особенностях сервисов.
В этой статье я рассмотрю некоторые особенности почтовых клиентов и способы их обхода.
Outlook
Чтобы понять, любит верстальщик свою работу или нет, достаточно узнать его отношение к Outlook. Это один из самых проблемных почтовиков, и добиться корректного отображения в нём — отдельный вид искусства. Рассмотрим несколько примеров.
Полосы
Самый непредсказуемый и сложноустранимый баг.
Эти полосы произвольно возникают в любой версии десктопного приложения Outlook. Убираешь полосу в одной версии — она может появиться в другой. Более того, у одного пользователя полосы могут появиться, а у другого с той же версией — нет.
Решение
Outlook «не любит» нечётные числа, поэтому первый шаг — изменить на чётные все размеры шрифтов, межстрочные интервалы и отступы в блоках вблизи полосы. Второй — поменять отступы вблизи полосы или разделить их на два.
На примере выше отступ под заголовком можно разделить на два: один из них оставляем под заголовком, второй вносим в блок между полосой и карточками.
Исчезающая правая рамка
Этот баг мы обнаружили только в Outlook 2019. Чаще всего правая рамка пропадает у двух или более блоков, стоящих в ряд.
Решение
Оберните проблемный блок в ещё одну таблицу с рамкой, цвет которой соответствует цвету фона. У исходной таблицы уберите упоминание о ширине, чтобы при удалении рамки внутренний блок растянулся на оставшееся пространство.
Важный нюанс: фон белый, рамка тоже белая — казалось бы, в тёмной теме цвета должны инвертироваться одинаково. Но нет. На скриншоте ниже видно, что двойная рамка нижней карточки выглядит явно толще одинарной.
Можно обернуть все блоки с рамками, чтобы в тёмной теме все они выглядели одинаково. Либо использовать такой подход только для тех писем, где важно отображение в Outlook. Выбор за вами.
Одновременная вёрстка фона и кнопки или двух фонов
Для иллюстрации этого бага возьмём блок с промокодом, с которым дальше мы ещё не раз встретимся.
Outlook не поддерживает свойство background-image, поэтому для фоновых изображений используем специальный код на языке векторной разметки VML. Его же применяем при вёрстке кнопки для корректного отображения в Outlook.
У VML есть один досадный недостаток: один код нельзя вложить в другой. Что может случиться, видно на примере. Кнопка распалась на отдельные части, при этом её фон улетел в левый верхний угол.
Аналогичная проблема может возникнуть, если в письме несколько фоновых изображений, вложенных друг в друга.
Решение
Кнопку можно оформить картинкой, чтобы она корректно отображалась в Outlook любой версии. Минус только один: в Outlook по умолчанию отключена загрузка изображений. Поэтому не забывайте прописывать альтернативный текст у изображений в атрибуте alt (об одной особенности отображения альт-текста речь пойдёт ниже).
При наличии двух и более фонов в одном блоке следует выбрать тот, что приоритетней. Именно он и будет виден в Outlook.
Высота отступов
Что может быть проще и понятнее, чем отступы между блоками? Но и тут нас ждёт сюрприз от Outlook. Чаще всего такие отступы мы выполняем через div:
Но чем выше отступ, сделанный таким образом, тем больше погрешность при рендеринге в Outlook.
Слева — отступы, выполненные через div. Справа — реальная высота.
Особенно это важно в письмах, где есть фоновое изображение. Для него используется код на основе языка VML, в котором необходимо указывать общую высоту блока. Погрешность в рендеринге отступов может обрезать контент снизу. И чем больше отступы, тем больше эта погрешность.
Например, в Outlook 2016 контент уместился, но еле-еле.
А в Outlook 2019 последний абзац вовсе не влез.
Решение
Отступы от 30 px задавайте с помощью таблиц. Такие отступы рендерятся без искажений.
В появившемся окне выполните все необходимые настройки. Сохранённое изображение будет корректно отображаться в любой версии Outlook.
Gmail
У нас в EMAILMATRIX подход к вёрстке таков: всё, что можно адаптировать, должно быть адаптивно. Напомню: под адаптацией понимается либо перестроение блоков в мобильной версии, либо их масштабирование. Но данный подход не подошёл для «ВкусВилла», которому было важно сохранить визуал в мобильной версии. Подробнее об этом можно прочитать в кейсе.
Перейдя на неадаптивную вёрстку, мы столкнулись с некоторыми особенностями Gmail на iOS.
Схлопывается ширина при неадаптивной вёрстке на iOS
Любая ширина устремлялась к минимально возможному значению. То есть иконки прижались к логотипу, а текст заполнил всё пространство, исключив боковые отступы.
Как получилось
Как должно быть
Решение
Добавьте хотя бы одно изображение, равное письму по ширине (учитывая рамки, если они есть). Оно «удержит» весь контент на нужной ширине и не даст ему уменьшиться.
Схлопывается высота при неадаптивной вёрстке на iOS
Обратите внимание, как изменились низ блока с зелёным фоном и высота товарных карточек:
Как получилось
Как должно быть
Решение
Оберните таблицу в div с указанием минимальной высоты.
Этот баг характерен для тёмной темы. Рамка может просто исчезнуть — и это не связано с контрастностью цветов, как может показаться на первый взгляд.
На примере ниже — несколько версий одного и того же блока. Главное отличие по столбцам — прописан ли кодом фон у блока с рамкой:
В первой колонке цвет фона прописан кодом и совпадает с цветом окружающего фона.
Во второй колонке цвет внутри отличается от цвета снаружи.
В третьей колонке цвет фона у блока не прописан, то есть виден тот, что снаружи.
По строкам рассматриваем варианты с белой, серой и чёрной рамками на соответствующих фонах.
Поведение, как видите, непредсказуемое. Рамка может исчезнуть, поменять цвет или вообще не инвертироваться.
Решение
Решение неоднозначное и в какой-то степени философское. Вам нужно определиться, быть рамке в тёмной теме в Mail.ru или не быть. Если она всё-таки нужна, то попробуйте:
прописать цвет фона кодом — как, например, для серой рамки на белом фоне;
отказаться от фона совсем — как, например, для белой рамки на цветном фоне;
Все эти изменения, конечно же, нужно согласовать с дизайнером.
Яндекс
Исчезает прехедер
У каждого почтового клиента есть встроенный спам-фильтр, позволяющий оценивать надёжность писем. Этот фильтр анализирует различные факторы, в том числе стоп-слова. Особенно важно избегать их в теме письма, но не стоит забывать и о его контенте.
Рассмотрим пример, когда стоп-слова влияют на отображение прехедера. Вот две отправки одного и того же письма. В верхней строке прехедер есть, а во второй его нет — а значит, подтянулся текст письма.
К сожалению, чтобы найти причину искажения, верстальщику часто приходится проводить бесчисленные тесты, так как не все слова очевидны:
И это только маленькая часть! Более того, в данном примере проблема оказалась в самой последней строке: Яндексу почему-то не понравилось сочетание слов в ней. Но тем и интереснее были поиски!
Так что во всех последующих рассылках проблемы больше не возникло.
Решение
Переформулируйте фразу, содержащую стоп-слова, таким образом, чтобы исключить их, но не потерять смысл.
Если переформулировать не получается, замените русские буквы на схожие английские (e, o, a, c), если они визуально совпадают в использованном семействе шрифтов. На примере выше мы заменили букву «с» в слове «если» на английскую — и проблема исчезла.
Rambler
Скругление рамки
Допустим, у вас есть блок с промокодом, у которого заданы цвет фона, рамка и скругление. Код такого блока выглядит так:
В Rambler мы увидим следующее: у фона скругление работает, а у рамки — нет. Непорядок!
Решение
Чтобы у рамки срабатывало скругление, необходимо добавить тегу table в атрибуте style свойство border-collapse: separate. Наш блок примет следующий вид:
Градиент кодом не поддерживается в Rambler, Yahoo и Outlook. Предположим, поддержка этих почтовиков вам не важна и вместо градиента вы прописали альтернативный цвет фона. Здесь вас поджидает другая напасть: в тёмной теме в Mail.ru градиент не инвертируется.
Оригинал
Тёмная тема в Gmail
Тёмная тема в Mail.ru
Решение
Возьмите исходный фон, в котором содержится градиент.
Продублируйте его. Добавьте заливку основным цветом. Слою с градиентом добавьте opacity (непрозрачность) 70%. Подберите новые значения для градиента таким образом, чтобы цвета не отличались от исходного градиента.
При экспорте не забудьте убрать сплошную заливку и выберите формат png, чтобы сохранить прозрачность изображения.
Сравним, что получилось: верхний блок — это градиент вёрсткой, нижний — градиент прозрачностью.
Отмечу, что такая кропотливая работа требуется не всегда. В большинстве случаев контраст между фоном и текстом такой, что при инвертировании текст всё равно виден. В таком случае фон можно экспортировать как есть, то есть с непрозрачностью 100%.
Такой способ подойдёт только для простых градиентов: линейных и не осложнённых разнообразием цветов.
Другой подход — учесть эту особенность при дизайне и подобрать такой контраст между текстом и фоном, чтобы в тёмной теме все было читабельно.
Светлая тема
Тёмная тема в Яндексе
Тёмная тема в Gmail на iOS
Суммы, время, даты и адреса превращаются в ссылки
В некоторых почтовых клиентах можно наблюдать, как текст почему-то преобразуется в ссылки. Чаще всего это видно в стандартном почтовике на iOS и в Яндексе. Причём некоторые преобразования явные (текст становится синим и обзаводится подчёркиванием), а некоторые — не очень. Обратите внимание, как выглядит время: цвет текста не изменился, а подчеркивание появилось.
iPhone 14 iOS 16
Яндекс
Решение
Оберните часть текста, который преобразуется в ссылку, в тег <a> без атрибута href. Если этот атрибут оставить, то стилизовать ссылку можно так, чтобы она не выделялась. Правда, при наличии атрибута href курсор превращается в «руку», что может сбить пользователя с толку. Не забудьте указать в свойствах цвет текста и убрать подчёркивание.
К сожалению, альтернативный текст, который прописывается в атрибуте alt у тега <img> на случай отключённых или незагруженных изображений, отображается не везде.
Gmail и Outlook — альт-текст отображается и в мобильной, и в десктопной версиях.
Yahoo — только в мобильной версии.
Mail, Яндекс, Rambler — не отображается вообще нигде.
Здесь решения нет, нужно просто знать о такой особенности. В любом случае, прописывать альтернативный текст у всех значимых изображений действительно важно. Это связано с тем, что рассылку получают в том числе и люди с ограниченными возможностями. Например, слабовидящие подписчики пользуются скринридерами, которые считывают альтернативный текст.
Скринридер — программа для преобразования контента интерфейсов в речь или шрифт Брайля.
Заключение
Даже зарекомендовавшие себя блочные конструкторы писем не могут охватить все возможности ручной вёрстки. Поэтому она и остаётся такой востребованной.
Обязательно тестируйте вёрстку во всех почтовых клиентах, чтобы потом не было сюрпризов в отображении. Мы в EMAILMATRIX учитываем все особенности и баги почтовых клиентов, поэтому наша вёрстка радует заказчиков и собирает положительные отзывы 😀