Мы организуем конференцию для веб-разработчиков и решили обзвонить Челябинские веб-студии. Нужно было как-то сразу после звонка отправить красивое письмо. Также важно получать отчеты о доставке писем и “кликабельности” ссылок (первое на случай опечатки, а второе для оценки затеи). Да, и это все нужно “еще вчера”, а программисты не доступны.

Челлендж принят! И элегантное решение уже под катом...

В общих чертах реализация выглядит так:
  • в mandrill.com настраиваем SMTP, DKIM, SPF (последних два для повышения доли доставленных писем), там же будем смотреть отчеты;
  • разворачиваем Drupal, настраиваем отправку html-писем через smtp и модуль webform (он умеет отправлять письма на адрес, указанный в форме);
  • закрываем форму от внешнего мира;
  • создаем письмо и запихиваем его в нашу форму;
  • показываем оператору как авторизоваться и куда вводить адрес приглашаемого.


1. Получаем SMTP с плюшками


Mandrill — это сервис доставки писем от MailChimp. Для нас важно, что он предоставляет SMTP-интерфейс и нужные нам отчеты. Вместо него можно взять и другой подобный. Итак:
  • регистрируйтесь, и сразу идите в раздел Settings, добавьте API Key, он будет паролем, здесь же SMTP-реквизиты;
  • далее в подраздел Sending Domains для подтверждения домена, активации DKIM и добавления SPF-записи (вам потребуется доступ к DNS домена с которого будут отправляться письма, рекомендую ПДД от Яндекса или cloudflare.com).

На этом же шаге вам стоит определиться с адресом, с которого письма будут уходить. Также рекомендую настроить пересылку писем от туда к себе, т.к. люди будут писать в ответ на вашу рассылку.

Стоит отметить, что на старте вам будет доступно 12 000 бесплатных писем и 250 отправлений в час. Далее квота будет расти, если вы не спамите. Или падать, как у нас, если забудете добавить ссылку отписки от рассылки.

2. Разворачиваем Друпал и настраиваем отправку писем


Дабы не усложнять задачу, предлагаю вам скачать преднастроенную сборку. Вам остается только распаковать файлы в папке хоста, залить дамп в базу и поменять реквизиты подключения к базе данных в файле /sites/default/settings.php (со строки 18). Пароль администратора в архиве.

И немного настроек:
  1. Идите в /admin/config/system/site-information (Конфигурация -> Информация о сайте) и укажите email с которого будите отправлять письма в поле “E-mail адрес”.
  2. А теперь в /admin/config/system/phpmailer (Конфигурация -> PHPMailer) и заполните поля данными из mandrillapp.com/settings/index (здесь же можно указать свой email, чтобы проверить настройки):


  3. Форма доступна только авторизованным пользователям, а регистрация новых пользователей — только администратору, поэтому вам нужно зарегистрировать аккаунты (или несколько) для операторов колл-центра. Для этого идете на /admin/people/create (Пользователи -> Добавить пользователя) и заполняете все поля (роль ни какую не ставим, а вот уведомить о создании учетки может быть удобно):



    Если сделаете несколько аккаунтов, то сможете потом посмотреть на продуктивность операторов на странице Результаты (закладка на главной). Кстати, да, форма выводится как главная страница.
  4. Ну и осталось настроить само письмо. На следующем шаге мы разберемся с кодом письма, а пока давайте сделаем что-нибудь тестовое:
    • идите на страницу /node/6/webform/emails/1 (на странице формы: Опросник -> Настройка оповещений -> Правка напротив единственного оповещения) и укажите имя и адрес отправителя, тему письма;
    • в поле “Шаблон e-mail” можно указать что-нибудь html-содержащее, позже мы сюда вернемся со своим кодом письма;
    • сохраняйте все и отправляйте тестовое приглашение (с главной), письмо должно прийти.

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

3. Собираем письмо


Прежде всего, хочу напомнить, что письма должны быть особым образом сверстаны. На хабре много статей на этот счет. Возможно, в комментариях подскажут сносный конструктор, который позволяет получить код письма. Я же стянул код из рассылки, которую мы делали в аналоге MailChimp (через ссылку на веб-версию письма). В следующий раз попробую использовать github.com/mailgun/transactional-email-templates.

4. Profit!


Осталось только дать оператору адрес где вы развернули сайт, логин, пароль и письма полетели:



Вот и все, что я хотел рассказать про отправку писем колл-центром. Что думаете, коллеги?

Комментарии (8)


  1. questor
    08.05.2015 15:58

    Да, и это все нужно “еще вчера”, а программисты не доступны. Челлендж принят! И элегантное решение уже под катом...

    Итак, это элегантное решение делал не программист. А теперь попробуем представить, сколько программистов потребуется, чтобы вкрутить лампочку чем бы отличалось итоговое (не менее элегантное решение) от описанного в статье. Найди десять отличий!


    1. Abyasov Автор
      08.05.2015 16:02

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


      1. questor
        08.05.2015 16:11
        +4

        Собственно о том и речь. Нубская задача, начинающий разработчик, уровень статьи позволяет воскликнуть «хабр не торт». Был это не друпал, а какой-нибудь битрикс — уже нахватали бы минусов за тривиальный тьюториал.
        А, всё ж один уже поймали. Ну, глядишь этим и ограничится, пятница всё ж и праздники на носу.


        1. Abyasov Автор
          12.05.2015 09:08

          Ну вот вы с какой целью всех по себе меряете? Люди разные, есть не только «нубы», есть еще специалисты из смежных областей IT.
          С другой стороны — посмотрите количество добавления в избранное и сделайте выводы.
          Вы так расстраиваетесь, как-будто я последние байты в СХД занял статьей, ну ей-богу ))


  1. Setrino
    08.05.2015 23:43
    -1

    Я вам за 2 часа mail service на Apache подниму с Postfix и Dovecot и все бесплатно и без лимитов.


    1. Abyasov Автор
      12.05.2015 09:04

      Дык, это… Ждем tutorial.


  1. armab
    09.05.2015 01:43

    А Mandrill DKIM подписывает с помощью rsa-sha1 или rsa-sha256? Сколько таких почтовых сервисов ни пробывал — все на старом sha1.
    По подобным причинам не нравятся подобные сервисы — нельзя сконфигурировать все под свои нужды.


    1. questor
      10.05.2015 14:55
      +1

      Массовые сервисы потому и массовые, что не могут каждого индивидуально обслужить. Вам в сторону собственного сервера с postfix и opendkim смотреть надо, думаю, впрочем, что у вас уже что-то подобное готово.