Верстка e-mail

Верстка е-мейлів має певні особливості. Вона заснована на досить старих технологіях HTML2.0 та CSS першої редакції.

Internet 90th
Інтернет 90-х

Ще є проблемою те, що HTML-код мають інтерпритувати багато різних програм, серед яких iOS Mail, MS Mail, Outlook, Outlook Express, The Bat!, Mozilla Thunderbird, Opera Mail та десякти інших.

Наразі поштовими програмами користуються в основному корпоративні клієнти і вони втрачають популярність на користь веб-інтерфейсів. Та локально можна зберігати сотні-тисячі гігабайтів електронних листів, а в хмарних сервісах це - дороге задоволення.

Але на мобільних платформах додатками для електронних листів користується майже кожен.

Кожна з цих програм може відображати верстку е-мейл трохи по-своєму. Більше того, різні версії MS Outlook відображають верстку по-різному. Складається враження, що у версії 2007-го року двіжок був більш продвинутий, ніж у 2010-го, який славився великою купою глюків у відображенні.

По-перше, ви не можете використовувати блоки <div>, вся верстка була таблична.

По-друге, ви досить обмежено можете використовувати стилі. Ви повинні зробити гарно все без стилів, а тоді добавити стилі для більш продвинутих програм.

По-третє - забудьте про бекграунд. Ви можете вставляти тільки картинки, через атрибут bgcolor задавати фоновий колір.

Ширина макета у е-мейлів як правило коливається в межах 580-620 пікселів. Це пов’язане з розповсюдженням в свій час моніторів 640 і 1024 пікселя в ширину.

На екранах в 640 пікселів е-мейл займав всю ширину екрану, на екранах в 1024 пікселя - збоку ще могла розміщуватися панель з деревом каталогів поштового ящика.

The Bat!
Програма для роботи з електронною поштою The Bat!

Останнім часом з'явилась можливість використовувати деякі стилі. Вони завжди прописуються в тег, ніяких класів немає.

Зі стилів використовуємо тільки padding, color, text-decoration, font-size, line-height.

<h1 style="font: normal 24px/36px Arial, Helvetica, sans-serif; color: blue;">
  Шановний Боба!</h1>
<p style="...">Повідомляємо вам, що у нашому інтернет-магазині почався сезон знижок...

Стандартна початкова сітка е-мейлів

Скачайте макет (jpg) та зробіть порізку. Зверніть увагу, що якщо текст розташовується на фоновому зображенні, градієнті - цей текст потрібно вирізати разом із фоном, а не відключати як у верстці сайтів.

Починаємо верстати з базової сітки. !DOCTYPE можна не використовувати, за часів html2.0 цього тега ще не було.

  Сюди вставляємо таблицю з контентом  
   
<table border="0" width="100%" cellspacing="0" cellpadding="0">
  <tr>
    <td><img src="images/spacer.gif" alt="" width="20" height="20"></td>
    <td width="580"><img src="images/spacer.gif" alt="" width="580" height="20"></td>
    <td><img src="images/spacer.gif" alt="" width="20" height="20"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>
      Сюди вставляємо таблицю з контентом:
      <table width="580" border="0" cellspacing="0" cellpadding="0">
        ...
      </table>
    </td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><img src="images/spacer.gif" alt="" width="20" height="20"></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>

Для пустих комірок необхідно використовувати прозорий файлик spacer.gif, який триматиме розмір комірки, або нерозривний пробіл &nbsp;.

Всі зображення потрібно зберігати на сервер і вставляти абсолютні посилання.

Ви не можете використовувати скрипти, відео та аудіо. Замість відео зазвичай вставляється картинка-заглушка з посиланням на ютуб чи веб-сторінку, де це відео можна переглянути.

Тестування та відправка e-mail

Повноцінно протестувати електронний лист доволі важко: його потрібно розіслати зі свого сервера (що знаходиться у "білому" списку серверів) на десятки популярних е-мейл провайдерів: google-mail, ukr.net, i-ua, yandex-mail, mail-ru, aol, msn і т.д.

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

Сама поверхнева перевірка - у Google-mail:

1. Заляйте на github.io чи свій хостінг зображення з верстки е-мейла.
2. Пропишіть в коді е-мейла повні URL-адреси на зображення.
3. Створіть в гуглі нового листа і через інструменти розробника вставте у лист HTML-код свого листа.
4. Відправте лист самі собі та перегляньте результат.

Якщо є можливість скористатися сервером з PHP - то алгоритм дій приблизно наступний:

Створіть файл mail.php поруч із вашою версткою е-мейлів.

<?php
  error_reporting(0);
  $mail = 'boba@mail.com';
  $subject = 'Тестування e-mail верстки';
  $ctype = 'Content-type: text/html; charset=utf-8 \r\n';
  $message = 'Сюди вставляємо код зверстаного е-мейла';
  mail($mail, $subject, $message, $ctype);
  echo 'Done <i>13</i>';

В змінну $message потрібно внести лише вміст тега body, тільки таблиці, не вставляйте весь код HTML!
У е-мейлів немає доктайпа, тегів html, head, meta, link, body.

Зображення можна заляти на поточний сервер, скористатися гітхабом, іншими хмарними сервісами з вільним доступом до ресурсів.

Переконайтесь, що прописали свою електронну адресу.

Перевірте, чи все гаразд з лапками, апострофами.

Запустіть у браузері скрипт.

Через деякий час на вашу електронну скриньку має прийти тестовий лист. Можливо, він попаде в паку smap.

 

Є трохи простіший спосіб протестувати е-мейл. Спочатку вам в html-файлі треба повидаляти все до тега body включно, і закриваючі теги body, html, залишити лише таблиці. Також потрібно прописати абсолютні шляхи до зображень.

Тепер замість вставляння html-коду в php, екранування лапок з апострофами, можна просто імпортувати вміст файла у змінну:

$message = file_get_contents('mail.html');

Домашнє завдання

  1. Зверстайте е-мейли: emails.zip (jpg)
  2. Протестуйте зверстані е-мейли, відправивши їх собі на пошту двома способам: вставивши код в php-файл та імпортувавши код з файла. Замість Done пропишіть пояснення, типу "Code in PHP", "Import code from html"

Додаткова інформація

Хабрахабр: Верстка email рассылок от А до Я для чайников.

Якщо вам потрібно буде верстати багато шаблонів e-mail - використовуйте фреймворки, наприклад, Foundation for Emails 2.

pilotmailer.com - тестування е-мейлів.

htmlemailcheck.com/check - тестування е-мейлів.