Верстка текста в письмах существенно отличается от верстки сайтов, хотя реализуется она теми же способами (HTML и CSS). Макет письма обычно составляется с помощью приемов, которые крайне не рекомендуется использовать при верстке страниц: стили внутри HTML, пережатые картинки или их отсутствие, только стандартные шрифты и так далее. Ниже мы расскажем, почему нужно придерживаться «неправильных» правил, как сверстать тело письма и где взять шаблон электронного письма, если вы не хотите заниматься этим муторным процессом самостоятельно.
Итак, почему же верстка email писем оборачивается таким адом для верстальщика? Дело в том, что клиентов, отображающих письма – десятки, и каждый из них расшифровывает разметку/верстку по-своему. Верстку электронной почты можно сравнить с версткой интернет-страниц на заре существования интернета: есть много браузеров, каждый из них воспринимает HTML/CSS на свое усмотрение, как результат – страница идеально ровно отображается в одних браузерах и безжалостно «едет» в других. Со временем стандартизация (и доминирование Google, что уж там) свели верстку страниц к единым правилам, только вот какой-то общий шаблон для письма пока никто не придумал, как результат – верстальщикам приходится тщательным образом выбирать инструменты, при использовании которых верстка поедет только у небольшого числа людей, получивших письмо (а она поедет обязательно, не сомневайтесь).
Сама верстка по технике и технологиям ничем не отличается от верстки страниц на HTML и CSS. Вы все так же размечаете макет письма через <head> и <body>, после чего верстаете письмо как страницу. Верстку адаптивных писем делают так же, как адаптивную верстку страниц. На свой страх и риск вы даже можете добавить JavaScript, но здесь вас ждут очень большие проблемы – большинство почтовых клиентов либо вообще режут JS-скрипты, либо жестко лимитируют набор команд, которые можно использовать в письме.
Мы крайне не рекомендуем использовать JS при верстке писем – лучше ограничиться использованием HTML кодов и стилями CSS.
Начнем мы, пожалуй, с самого легкого способа. Если вы не хотите тратить много времени на то, чтобы самостоятельно постигать премудрости верстки писем – для вас создали шаблоны электронной верстки, вроде Stripo Email и других. Список сервисов, на которых есть готовые Email шаблоны:
Естественно, это – не все сервисы рассылок и генерации шаблонов, по факту их намного больше.
Если хотите – можете без проблем нагуглить десяток сервисов и выбрать себе понравившийся, но они в большинстве своем будут платными. Если нет желания платить – читайте ниже о том, как сформировать свое письмо без почтовых сервисов.
Любая станица начинается с тега head, и письмо – не исключение. В head обычно прописывают мета-информацию для браузеров, мы же будет прописывать ее для почтовых клиентов.
Что нужно прописать:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml">
<head>
<title>Test Email Sample</title>
<meta http–equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http–equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0 " />
<style>
<!— CSS-код, если мы будем писать его здесь —>
</style>
</head>
Теперь можно переходить к телу письма.
При создании скелета письма вам нужно использовать табличную верстку и только ее – div можно использовать только с крайней осторожностью и при большой необходимости:
<table>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
Все элементы вы, собственно, будете располагать внутри ячеек. Нужно сделать отступ? Прописываете его ячейке или делаете пустую ячейку. Хотите сложную разметку с несколькими колонками? Делаете таблицу в таблице. Вполне нормальной считается такая вот вложенность:
С обычной версткой у вас здесь не должно возникнуть проблем, ячейки ведут себя довольно предсказуемо. Проблемы возникают тогда, когда вам нужно сделать адаптивную верстку. Чтобы все отображалось корректно на мобильных устройствах, вам нужно пользоваться CSS-правилом
@media only screen and (min–width: ___px) and (max–width: ___px)
На практике мобильную версию создают следующим образом:@media only screen and (min–width:481px) and (max–width:699px) {
.em_main_table {
width: 100% !important;
}
.em_wrapper {
width: 100% !important;
}
.em_hide {
display: none !important;
}
.em_img {
width: 100% !important;
height: auto !important;
}
.em_h20 {
height: 20px !important;
}
.em_padd {
padding: 20px 10px !important;
}
}
Все em – это либо таблицы, либо ячейки таблиц. Для разных категорий экранов вы переопределяете отступы и ширину макета – естественно, все это вам нужно будет на ходу тестировать, чтобы определить оптимальные размеры блоков при определенной ширине экрана.
Выше мы показывали, как использовать правила стиля CSS в верстке писем. А куда этот CSS вставлять? Сразу скажем, что нельзя через link прописать в head адрес и надеяться, что какой-то из почтовых клиентов будет сам скачивать файл. Не будет, почтовые клиенты вообще очень жестко относятся к сторонним файлам. Выход – делать то, что при верстке сайтов делать ни в коем случае нельзя: прописывать CSS с помощью форматов HTML, в теге style или вообще в атрибуте style элемента. Прописывания стиля в head выглядит так:
<style>
h1{ color: blue; }
</style>
Прописывание стиля с использованием HTML Inline выглядит так:
<h1 style="color:blue;">A Blue Heading</h1>
Увы, только так стиль корректно отображается во всех версиях Outlook и в некоторых других почтовых клиентах.
Когда письмо приходит на электронную почту, некоторые почтовые клиенты автоматически назначают стили элементам, чтобы эти элементы выглядели красиво, если у письма нет разметки. Проблема здесь в том, что если письмо размечено, то эти дефолтные стили могут сломать верстку. Чтобы этого не произошло, нужно переопределить «опасные» стили с !important:
<style type="text/css">
body{
margin:0;
padding:0;
}
img{
border:0 none;
height:auto;
line-height:100%;
outline:none;
text-decoration:none;
}
a img{
border:0 none;
}
.imageFix{
display:block;
}
table, td{
border-collapse:collapse;
}
#bodyTable{
height:100% !important;
margin:0;
padding:0;
width:100% !important;
}
</style>
После этого кода вы можете писать свои стили.
Если мы не говорим про Google Actions (будут отдельно разобраны ниже), то кнопка – это ячейка таблицы, в которой лежит ссылка с закрашенным фоном и отступами. Пользователь нажимает на «кнопку», после чего переходит по ссылке. HTML на практике выглядит так:
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td>
<table cellspacing="0" cellpadding="0">
<tr>
<td class="button" bgcolor="#ED2939">
<a class="link" href="адрес-нужной-страницы" target="_blank">
Click
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
В head нужно прописать стили для классов:
.button {
border-radius: 2px;
}
.button a {
padding: 8px 12px;
border: 1px solid #ED2939;
border-radius: 2px;
font-family: Helvetica, Arial, sans-serif;
font-size: 14px;
color: #ffffff;
text-decoration: none;
font-weight: bold;
display: inline-block;
}
Все, никакой магии.
Основное из типографики, что можно применить к верстке писем – это шрифты. Выше мы уже говорили, что далеко не все клиенты корректно отображают внешние стили, подключенные через link с адресом CSS-файла (выделяется здесь Outlook, который вообще ничего не пропускает). А для подключения шрифтов обязательно нужно скачивать их из какого-то источника. Что делать?
Чтобы решить проблему, нужно прописать 2 правила. Первое использует стандартные шрифты, которые есть в любом почтовом клиенте; после этого правила идет следующее, подключающее внешний шрифт. Если почтовый клиент это позволяет – будет скачан шрифт, если это невозможно – будет использоваться стандартный. Например, в стилях мы указываем:
<head>
<link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
</head>
После чего в стиле элемента пишем:
<td style="font-family: 'Open Sans', Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal;">Какой-то текст.</td>
Таким образом будет использован Опен Санс, а если почтовый клиент его не найдет, то очередь перейдет к Helvetica.
Outlook – это головная боль верстальщика писем. Эта боль – настолько сильная, что даже сам Outlook это признал, вследствие чего в нем появились условные комментарии. Условный комментарий – это код, который будет исполнен только в том случае, если его исполняет определенный почтовый клиент. Чаще всего этим клиентом как раз выступает Outlook, а все остальные клиенты этот код игнорируют. Выглядит условный комментарий так:
<!--[if mso]>
…какой-то стиль…
<![endif]-->
Как видите, весь код заключен в комментарий – то есть почтовые клиенты, не имеющие представления об условных комментариях, примут этот код за обычный комментарий и просто проигнорируют его. Пример использования как раз связан с предыдущей темой, со шрифтами. Outlook не только не подгружает шрифты из других источников – он еще и молча переопределяет список стандартных шрифтов, по умолчанию выставляя Times New Roman. Чтобы справиться с этим, вам нужно явно переопределить список шрифтов:
<!--[if mso]>
<style type="text/css">
.body-class {
font-family: Arial;
}
</style>
<![endif]-->
Это – не единственная проблема, у Outlook еще есть проблема с разметкой при адаптивной верстке – почтовый клиент очень любит эту самую верстку ломать. Более детально об этом вы можете почитать вот в этой публикации на stackoverflow.
Гарантированно поддерживаются только 3 формата: jpg, png, gif. Про видео можете забыть (как вариант – можете дать ссылку на YouTube). Чтобы не сломать блочную верстку таблицей, изображения нужно вставлять в ячейки как фоновые – это позволяет загружать их из какого-то дистанционного источника, кроме того, почтовый клиент сам выберет подходящий размер изображения, исходя из фактического размера блока. Код выглядит следующим образом:
<td align="center" style="background-image: url('адрес картинки'); background-repeat: no-repeat; background-position: top center;"></td>
Но опять возникает проблема с Outlook – он не будет загружать картинку из какого-то источника. Пару лет назад Microsoft все же добавила функционал для адекватной работы с картинками в этом случае, реализуется этот функционал через условные комментарии:
<td background="ссылка на изображение" style="height:700px; background-image:url(ссылка на изображение)">
<!--[if gte mso 9]>
<v:image xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style=" border: 0;display: inline-block; width: 550px; height: 700px;" src="ссылка на изображение" />
<v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style=" border: 0;display: inline-block;position: absolute; width: 550px; height: 700px;">
<v:fill opacity="0%" color="#f7901e" />
<v:textbox inset="0,0,0,0">
<![endif]-->
<div>
<!—любой HTML-код -->
</div>
<!--[if gte mso 9]>
</v:textbox>
</v:fill>
</v:rect>
</v:image>
<![endif]-->
</td>
Увы, какого-то более простого способа нет. С этим кодом умеют работать все почтовые клиенты Microsoft.
Важно понимать, что даже имеющихся инструментов вполне достаточно, чтобы создавать оригинальные тексты и изображения писем. Главное при этом – не забывать размещать и предварительно прорабатывать alt к каждой использованной картинке. Пример такой вдумчивой работы показан на скриншоте ниже.
Эти кнопки работают только тогда, когда письмо приходит на почтовый ящик в зоне gmail. Сами кнопки выглядят так:
Когда пользователь нажимает на кнопку – что-то происходит, например – его перенаправляет на сайт или в его ежедневник (если тот синхронизирован с Гуглом) записывается событие. Кнопки создаются через специальный сервис Гугла. Чтобы кнопки работали, вам нужно будет написать JS-скрипт и привязать его к кнопке (гайды). Чтобы пользоваться услугой, вам нужно попасть в «белый лист» Гугла (форма для подачи заявки). Чтобы вас добавили, ваша почта/сайт должны соответствовать куче требований Гугла.
Прехедер – это то, что идет после темы письма в предпросмотре.
Добавляется он очень просто – сразу после <body> вам нужно добавить следующий код:
<div style="font-size:0px; line-height:1px; mso-line-height-rule:exactly; display:none; max-width:0px; max-height:0px; opacity:0; overflow:hidden; mso-hide:all;">
<!—До 100 символов прехедера -->
</div>
Как вы можете заметить, этот элемент не отображается, то есть он не поломает вам верстку. Он отображается только в предпросмотре, потому что стили при формировании предпросмотра не учитываются.
Отправка электронного письма адресу без проверки – типичная ошибка начинающего верстальщика. Намного профессиональнее провести предварительное тестирование, которое выявит ошибки или слабые места рассылки, которые наверняка обнаружатся при более внимательном рассмотрении. К числу наиболее часто встречающихся на практике необходимо выделить такие:
Тестирование электронных писем происходит несколькими способами. Выбор подходящего зависит от персональных предпочтений верстальщика и наличия свободного времени. Если последнего достаточно, имеет смысл задействовать сразу несколько вариантов проверки, среди которых присутствуют такие:
Эффективность почтовой рассылки в немалой степени определяется тем, насколько доступно изложено содержимое. Далеко не всегда верстальщики задумываются, как сделать контент email более простым, понятным и, как следствие, прочитанным до конца. Чтобы повысить КПД от этого вида рекламы, необходимо следовать нескольким несложным правилами:
Отдельного упоминания заслуживает комбинация так называемой отзывчивой и адаптивной верстки email. Она предусматривает возможность одинаково успешного отображения электронного письма как на стационарном ПК, так и на любом мобильном устройстве. Сегодня эта тема является очень актуальной, так как более половины рассылок открываются и прочитываются со смартфонов или планшетов.
Самый простой способ решения задачи предусматривает создание «резинового» электронного письма. Яркий термин означает, что размеры области контента подстраиваются под габариты экрана, на котором открываются. Программный код для подобной операции выглядит достаточно просто:
container {
max-width: 600px;
width: 100%;
}
Его добавление гарантирует, что адресат получит полноценный контент, независимо от того, на каком устройстве письмо будет открыто. В сочетании с описанными выше правилами это обеспечит намного более высокий уровень доступности и эффективности почтовой рассылки.
Аналогичного результата можно добиться еще одним способов – посредством гибридной и эластичной верстки email. В этом случае расположение контента изменяется с учетом экрана устройства, на котором он загружается.
Реализация такой возможности предусматривает использование специально написанного сниппета. Он может выглядеть следующим образом.
<!—[if (gte mso 9)|(IE)]>
<table align="left" border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td align="left" valign="top" width="50%">
<![endif]—>
<div class="span-3" style="display: inline-block; Margin-bottom: 40px; vertical-align: top; width: 100%; max-width: 278px;">…</div>
<!—[if (gte mso 9)|(IE)]>
</td>
<td align="left" valign="top" width="50%">
<![endif]—>
<div class="span-3" style="display: inline-block; Margin-bottom: 40px; vertical-align: top; width: 100%; max-width: 278px;">…</div>
<!—[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
<![endif]—>
@media only screen and (max-width: 620px) {
.span-3 {
max-width: none !important;
width: 100% !important;
}
.span-3 > table {
max-width: 100% !important;
width: 100% !important;
}
}
Есть множество сервисов, к примеру: htmlemailcheck, putsmail, htmlemail.
Если не пользоваться конструкторами и шаблонами – опций мало, можете попробовать сервис, который переводит CSS-стили в инлайнеры (записывает в теги).
Тезисно: