Статьи

Создание вашего стартапа: уточнение шаблонов электронной почты

Конечный продукт
Что вы будете создавать

Это руководство является частью серии « Создай свой стартап с помощью PHP» на Envato Tuts +. В этой серии я проведу вас через запуск стартапа от концепции до реальности, используя мое приложение Meeting Planner в качестве примера из реальной жизни. На каждом этапе я буду публиковать код Планировщика собраний в качестве примеров с открытым исходным кодом, из которых вы можете извлечь уроки. Я также буду решать вопросы, связанные с бизнесом по мере их возникновения

В этом руководстве я буду дорабатывать адаптивные HTML-шаблоны электронной почты, которые Meeting Planner использует для отправки приглашений, уведомлений, напоминаний и сообщений, связанных с учетной записью.

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

Вероятно, половина первого опыта работы с Планировщиком встреч будет отправлена ​​по электронной почте.

Если вы еще не опробовали Планировщик собраний, запланируйте свою первую встречу . Я принимаю участие в комментариях ниже, так что скажите мне, что вы думаете! Вы также можете связаться со мной в Twitter @reifman . Мне особенно интересно, если вы хотите предложить новые функции или темы для будущих уроков.

Напоминаем, что весь код для Meeting Planner написан на Yii2 Framework для PHP. Если вы хотите узнать больше о Yii2, ознакомьтесь с нашей параллельной серией Программирование с Yii2 .

Первоначально я использовал базовые фреймворки, которые я нашел в Интернете, для создания ранних писем для Meeting Planner. Они работали приемлемо на ранней стадии разработки.

Вот пример наших существующих писем в формате HTML; они функциональны, но не очень привлекательны. И в целом я решил, что людям не нужно так много вариантов и ссылок в их приглашениях. Пришло время уменьшить количество вариантов для более простого опыта.

Шаблоны Планировщика Встреч - Оригинальный HTML Шаблон Приглашения

Даже с шаблонами, которые я использовал, таблицы электронной почты часто выглядели испорченными без объяснения причин:

Шаблоны планировщика собраний - пример искаженного представления приглашения в Gmail

Я готовился перейти на более профессиональные шаблоны электронной почты, но это было определенно давно.

Вот краткое изложение сообщений, которые Meeting Planner регулярно отправляет сегодня:

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

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

Я начал искать в Интернете лучшие шаблоны для электронной почты.

Есть несколько полезных руководств, таких как эти:

А ряд провайдеров предлагают собственные шаблоны с открытым исходным кодом:

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

Oxygen предлагает полное семейство шаблонов для полезных сценариев. Это казалось простым, организованным и легко расширяемым:

Шаблоны Планировщика Встреч - Отправьте С нами Кислородные Шаблоны

Это своего рода предложить свои шаблоны электронной почты с открытым исходным кодом, не требуя, чтобы вы были платным пользователем. Перейти с открытым исходным кодом!

Как инфраструктура MVC, Yii отделяет макеты от содержимого тела. Поэтому мне нужно было разбивать шаблоны и отслеживать различия между вариациями в группе.

Вы можете скачать семейство шаблонов Oxygen из Sendwithus GitHub , но они не делили четко стандартные элементы стиля, общие для каждого шаблона, поэтому вы должны сделать это самостоятельно.

Потребовалось некоторое время, чтобы выбрать, какие шаблоны я предпочел, какие элементы мне понравились, и какой CSS должен быть интегрирован в макет.

В конечном счете, вот новый макет HTML (я сократил стили здесь для удобства чтения):

1
<?php use yii\helpers\Html;

В шаблонах мне пришлось заменить несколько элементов:

  • логотип
  • Поддержка изображений
  • связи

Я создал файл логотипа, который будет работать на данный момент, и статически разместил его и вспомогательные изображения, например, для Twitter, на сервере Meeting Planner.

Шаблоны Планировщика Встреч - Логотип

Я также заменил ссылки по умолчанию в электронном письме кодом для ссылок нашего сайта.

Чтобы упростить повторное использование в приложении, я выделил код для нижнего колонтитула:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
use yii\helpers\Html;
use yii\helpers\Url;
use common\components\MiscHelpers;
?>
<tr>
  <td align=»center» valign=»top» width=»100%» style=»background-color: #f7f7f7; height: 100px;»>
    <center>
      <table cellspacing=»0″ cellpadding=»0″ width=»600″ class=»w320″>
        <tr>
          <td style=»padding: 25px 0 15px»>
            <strong><?php echo Html::a(Yii::t(‘frontend’,’Meeting Planner’), $links[‘home’]);
            Seattle, Washington<br />
          </td>
        </tr>
        <tr><td style=»font-size:75%;»><em>
          <?php echo HTML::a(Yii::t(‘frontend’,’Email settings’),$links[‘footer_email’]);
          |
          <?php //echo HTML::a(Yii::t(‘frontend’,’Block all’),$links[‘footer_block_all’]);
        </em>
        </td></tr>
      </table>
    </center>
  </td>
</tr>

Чтобы интегрировать шаблоны, я хотел начать с самого простого. Движение по сложным, незнакомым CSS и HTML никогда не бывает простым.

Я начал с нашего шаблона электронной почты для сброса пароля.

Я выбрал шаблон приветствия Oxygen, показанный ниже:

Шаблоны Планировщика Встреч - Кислородный Приветственный Шаблон

Каждый из индивидуальных шаблонов SendwithUs можно предварительно просмотреть и протестировать в своей учетной записи Litmus .

Вот наша электронная почта для сброса пароля сейчас на iPhone, намного более эстетически удобная, чем раньше:

Шаблоны Планировщика Встреч - Сбросить Ваш Пароль

Я был немного смущен, когда первые попытки Gmail, которые я получил, выглядели уродливо для меня.

Шаблоны планировщика собраний - сбросьте пароль в Gmail

Но просмотр их превью Litmus показал мне, что они так выглядят в Gmail :

Шаблоны Планировщика Встреч - Кислород Добро пожаловать в Gmail

Позже я узнал, что Gmail требует больше встраивания CSS, чем другие сервисы. Я помогу вам исправить это в следующем уроке.

Вот код passwordRequestToken.php, который помог сгенерировать вышеуказанное:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
use yii\helpers\Html;
/* @var $this yii\web\View */
/* @var $user common\models\User */
$resetLink = Yii::$app->urlManager->createAbsoluteUrl([‘site/reset-password’, ‘token’ => $user->password_reset_token]);
?>
<tr>
  <td align=»center» valign=»top» width=»100%» style=»background-color: #f7f7f7;»
    <center>
      <table cellspacing=»0″ cellpadding=»0″ width=»600″ class=»w320″>
        <tr>
          <td class=»header-lg»>
            Reset Your Password
          </td>
        </tr>
        <tr>
          <td class=»free-text»>
            Hello <?php echo Html::encode(\common\components\MiscHelpers::getDisplayName($user->id));
            Click the button below to reset your Meeting Planner password:
          </td>
        </tr>
        <tr>
          <td class=»button»>
            <div><!—[if mso]>
              <v:roundrect xmlns:v=»urn:schemas-microsoft-com:vml» xmlns:w=»urn:schemas-microsoft-com:office:word» href=»http://» style=»height:45px;v-text-anchor:middle;width:155px;»
                <w:anchorlock/>
                <center style=»color:#ffffff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-weight:regular;»>My Account</center>
              </v:roundrect>
            <![endif]—><a class=»button-mobile» href=»<?php echo $resetLink ?>»
            style=»background-color:#ff6f6f;border-radius:5px;color:#ffffff;display:inline-block;font-family:’Cabin’, Helvetica, Arial, sans-serif;font-size:14px;font-weight:regular;line-height:45px;text-align:center;text-decoration:none;width:155px;-webkit-text-size-adjust:none;mso-hide:all;»>Reset Your Password</a></div>
          </td>
        </tr>
      </table>
    </center>
  </td>
</tr>
<tr>
  <td align=»center» valign=»top» width=»100%» style=»background-color: #ffffff; border-top: 1px solid #e5e5e5; border-bottom: 1px solid #e5e5e5;»>
    <center>
      <br />
    </center>
  </td>
</tr>
<?php echo \Yii::$app->view->renderFile(‘@common/mail/section-footer-static.php’) ?>

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

Для этого я использовал шаблон подтверждения кислорода:

Шаблоны планирования встреч - Кислородный шаблон подтверждения

Я думал, что ящики «Доставка» и «Дата отгрузки» можно использовать для обмена опциями «Место» и «Дата и время», и это работает довольно хорошо.

Вот как выглядит приглашение:

Шаблоны планирования собраний - шаблон приглашения на собрание

Конечно, основной эстетический внешний вид намного лучше. В будущем я могу сделать некоторую работу, чтобы выровнять и выровнять вертикальные высоты полей мест и даты.

Вот код тела приглашения-html.php, который помог сгенерировать вышеуказанное:

1
<?php use yii\helpers\Html;

Теперь, когда базовые шаблоны были обновлены, я начну исправлять их появление в Gmail. И скоро мы будем внедрять уведомления и напоминания, используя их.

Пока вы ждете эпизоды об этих функциях, запланируйте свою первую встречу и опробуйте новые шаблоны. Кроме того, я буду признателен, если вы поделитесь своим опытом ниже в комментариях, и мне всегда интересны ваши предложения. Вы также можете связаться со мной через Twitter @reifman напрямую.

Я также начинаю экспериментировать с WeFunder, основываясь на внедрении новых правил краудфандинга SEC . Пожалуйста, обратите внимание на наш профиль . Я могу написать об этом больше как часть нашей серии.

Следите за будущими уроками в серии « Построение стартапа с помощью PHP» . Есть еще несколько важных функций.