Письма для ваших приложений (за 24-часа)

    Всем привет. Большую часть времени я занимаюсь управлением разработкой проектов shopium.ua и zakaz.ua, но инженер внутри меня периодически требует развлечений. Не имея свободного времени на хакатоны, гаражи, стартап-сауны и прочее, я придумал себе свой формат «покодить чего душа пожелает»:
    • нужен мне самому
    • время на реализацию MVP — до 24х часов в сумме
    • бюджет — до $100
    • коммерческий потенциал


    В наших проектах мы шлём пользователям письма. Мы шлём пользователям информационные рассылки, и с этим прекрасно справляется MailChimp, но ниша отсылки транзакционных писем (подтверждения, уведомления и т.д.) до недавнего времени была относительно пуста.

    В большинстве проектов, которые я знаю, транзакционные письма прямо в коде создаются из шаблона письма (и хорошо если он вынесен в отдельные файл, а не зашит рядом в коде), и передаются локальному SMTP серверу. И при этом:
    • менять текст сообщений могут только программисты (это медленно и дорого, и при этом невозможно делегировать работу с текстами контент-менеджеру, а для любого изменения текста писем нужен редеплой системы)
    • не отслеживается открытие писем и клики по ссылкам (нет данных для улучшения текста письма)
    • не обрабатываются bounce (можно постоянно слать письма на несуществующие адреса, а это влияет на показатель «спамности» адреса, с которого шлются письма)
    • лишь у некоторых реализована подпись писем через DKIM (тоже уменьшает шансы на доставку письма в inbox)


    Я решил за 24 часа сделать сервис, с помощью которого можно будет надёжно слать красивые письма, быстро менять их текст, и отслеживать статистику. Встречайте Notifout.


    Что такое Notifout?




    Notifout.com — это сервис для отправки транзакционных сообщений вашим пользователям, и работает он так:
    • вы в Notifout объявляете список шаблонов писем, которые вы хотите рассылать
    • когда нужно отослать пользователю письмо вы из своего приложения делаете HTTP POST запрос, передавая идентификатор шаблона, и любые дополнительные данные в виде JSON
    • Notifout используя ваш шаблон, и переданные данные сформирует HTML и plain-text версии письма, соберёт их в одно письмо, проставит токены для отслеживания открытия, пропишет в ссылках код для отслеживания кликов, проставит правильные заголовки для Return-Path и List-Unsubscribe, подпишет письмо с помощью DKIM ключа, и отправит получателю.





    Вся информация о взаимодествии получателя с письмом


    В случае если адресат недоступен — Notifout корректно отработает bounce, и отразит это в статусе письма.


    О времени и ресурсах


    Разработка велась в основном в перерывах между поездками и встречами, вечером под любимый сериал. В запланированный формат удалось вписаться практически полностью. Первая версия, заняла 23:30 (включая локализацию ru/en и оплату через PayPal/LiqPay), всё отсылала, принимала и всячески работала, но чтобы вписаться в тайминг из неё пришлось исключить реализацию DKIM/SPF. После релиза добавление SPF+DKIM заняло ещё около 4х часов.

    Финансовые затраты:


    Осталось: $52,52

    В планах было чтобы не мозолить стандартным бутстрепом глаза — купить симпатичную тему на https://wrapbootstrap.com/, но пока всё достаточно симпатично и так.

    Благодарности


    Конечно такой результат за 24 часа был бы не возможен без прекрасного FOSS софта, и отличных сервисов:


    Итог


    Мы уже используем его в своих проектах, но мне хочется поделиться им с окружающими, поэтому для всех пользовтелей хабра до 01.08.12 действует акция:
    Зарегистрируйтесь на http://notifout.com, и напишите на serg@notifout.com кодовую фразу «Я c хабра», со ссылкой на свой профиль на хабре, и адресом под которым вы зарегистрировались в Notifout и я увеличу вам бесплатный лимит до 10 000 сообщений в месяц.

    И на дессерт — видео 24х часов создания Notifout, сжатое до 11 минут, под аккомпанемент прекрасного пси-транса Etnica — Full-on:


    UPD1: Кстати, всем кому интересна тема рекомендую почитать прекрасную статью от MailChimp Email Delivery For IT Professionals
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 45

      +6
      Автору конечно респект, но мы например используем sendgrid.com, который решает большинство описанных проблем, разве что письмо приходится формировать локально, но это не большая проблема для нас. У нас в админке есть интерфейс для правки шаблонов писем, админы пользуются. DKIM есть, отслеживание кликов — есть.
        +2
        Да, мы тоже пользуемся сендгридом. Он крутой, но по сути он просто SMTP сервер, с возможностью инструментации проходящих писем кодом для трекинга.

        Хотелось получить решение на более высоком уровне абстракции.
        +4
        Вот и настал тот момент, когда кругом бутстраповские элементы интерфейса…
          +3
          Ага, бутстрап стал встречаться чаще чем стандартная тема вордпреса в блогах разработчиков.
            +3
            Дык отличнейший же фреймворк. И wrapbootstrap.com тоже крутой, можно разнообразить если есть желание.
            +1
            Но нужно признать, что они красивее, чем голый HTML.
            +1
            2 вопроса:

            1. Как быстро рассылаете? Допустим, 100К писем за какое время уйдут?

            2. Поддерживаете ли рассылки? (шаблон один, передается массив данных)
              +3
              1. Сервис заточен на транзакционные письма, где поток не очень большой, и скорость не супер-важна. Точно пока не мерял.

              2. И да и нет, в API передаётся список сообщений которые нужно отослать в виде
              "messages": [{ "template": "signup", "recipient": "sergey.kirillov@gmail.com", "data": { "first_name": "Sergey" } }, { "template": "signup", "recipient": "yet_another_user@gmail.com", "data": { "first_name": "Nikolay" } }, { ... }]

              и мы уже делали рассылку для дружественного проекта tutorle.com/, но те-же MailChimp всячески рекомендуют рассылать транзакционные и bulk сообщения с разных серверов. Поэтому возможно мы запретим рассылку bulk сообщений на уровне политики пользования сервисом.
                +2
                некрасиво как-то вставилось, вставлю картинкой

                  0
                  Понятно, спасибо. Вообще, поток может быть большим (допустим, вышла новая серия какого-то сериала, на который подписаны 10К человек, надо всех уведомить), но это зависит от специфики сервиса.
                +1
                Отличный сервис! В ближайшее время попробуем использовать. Спасибо.
                  0
                  >>токены для отслеживания открытия
                  это как? до сих пор думал что отрытие можно отследить только через картинки в письме, да и то если юзер разрешит их показывать.
                    0
                    Да, именно так. И понятное дело если человек кликает по ссылке в письме, заначит он его просматривал, и это тоже учитывается.

                    По поводу показа картинок — разные сервисы и программы ведут себя по разному: Mail.ru, например, показывает всегда, GMail показывает если письмо подписано, и если у адреса хорошая история, Thunderbird, насколько я помню — всегда спрашивает.
                    +1
                    Добавил UPD1: Кстати, всем кому интересна тема рекомендую почитать прекрасную статью от MailChimp Email Delivery For IT Professionals
                      0
                      Не работающая кнопка «Подробнее» на главной странице и скриншот с текстом 1 кегля как бы намекает, что в сервисе пока может быть много недоделок.
                        0
                        В AOL whitelist IP SMTP севрера добавлен? Как обстоит дело с доставкой топовым почтовым сервисам, yahoo в частности?
                          0
                          Тесты проводились в основном на GMail, но в единичных тестах Yahoo нормально работал.

                          FBL пока принимаем только с mail.ru, остальные в процессе.
                          0
                          Воодушевляющий проект :) Сам я ничего не рассылаю. Но вот чем вы такие графики рисуете меня очень интересует. Не подскажите?
                            +1
                              0
                              Тоже заинтересовался и посмотрел на highcharts. Если не секрет, какую лицензию на него используете на сайте?
                                0
                                Да, вопрос таки-к топикстартеру :)
                                  +1
                                  пока «For developing and testing applications using Highcharts». Дальше или купим, или перейдём на графики на d3js.org/
                            0
                            Интересный и полезный проект, хотелось бы добавление возможности оплачивать по webmoney.
                              –3
                              Сережа, не хочу тебя расстраивать, но ты «придумал велосипед»

                              Есть у Mailchimp c недавних пор такой сервис mandrill.com/
                              Если платишь им абонплату — бонусом, абсолютно бесплатно получаешь кучу транзакционных писем в довесок.
                                0
                                Рома, у меня есть аккаунт в мандриле. Он может делать ровно то-же что и Sendgrid.
                                  0
                                  Нотифаут отличается от них
                                    0
                                    Чем? Перечитал статью снова и понял, что нотифаут берет на себя только шаблоны дополнительно, верно?
                                      0
                                      Да, с Нотифаутом тебе не нужно менять приложение если поменялся текст письма. Можно легко и быстро их менять.

                                      Если пофантазировать о будущем — например можно будет делать A/B тесты разных версий письма, опять таки не меняя приложения.
                                0
                                Несколько ошибок в тексте на главной странице:

                                Scratching our own itch: which have или with tons, can be a real pain, so we built Notifout.
                                First-Class Deliverability Delivery: We are using, hit user's inbox
                                Accessible to non-developers: text gets hardcoded, without bothering developers
                                  +1
                                  спасибо. писал быстро, много не думал. поправим.
                                  0
                                  Не заметил в ролике документации написанного кода и использования vcs. Как же так?:)
                                    +2
                                    Mercurial + BitBucket проглядели, а относительно документации — хороший Python сам по себе читается как документация. А плохого мы не пишем :)
                                      +1
                                      Да, на такой скорости мог и проглядеть, каюсь. :)
                                    +2
                                    За один только ролик можно плюс ставить :)
                                    Отлично придумано.
                                      0
                                      Отличный сервис. Но хотелось-бы услышать скорость, с которой можете отправлять письма.
                                        0
                                        Я провел эксперимент:
                                        Дано — скрипт на php, который циклом отправляет 950 писем через стандартное апи на разные адреса.
                                        Все письма ушли за 6 минут (судя по показаниям вкладки «архив» на сайте сервиса).
                                          0
                                          Кстати, несколько багов:

                                          На вкладке «Архив» не переключаются страницы.
                                          Бесплатную квоту мне так и не повысили, хотя письмо с кодовой фразой я отправлял )
                                          Почему-то на вкладке «Домены» указано «Статус DKIM» и «Статус Sender ID» в состоянии «Ошибка», хотя с момента добавления мной этих записей прошло уже больше суток.
                                          Нет возможности удалить проект.
                                          В описании библиотеки для php ошибка (закралась фигурная скобка):
                                          require "notifout.php";
                                          
                                          notifout = new Notifout('ohsh6Iez3Nah0ahmohz2ge');
                                          notifout->send('signup', 'Dummy User <user@example.com>', array("first_name" => "Dummy"})
                                          

                                          , а должно быть:
                                          require "notifout.php";
                                          
                                          $notifout = new Notifout('ohsh6Iez3Nah0ahmohz2ge');
                                          $notifout->send('signup', 'Dummy User <user@example.com>', array("first_name" => "Dummy"));
                                          


                                          А вообще интерфейс очень нравится — все предельно просто и ясно.
                                            0
                                            А теперь и вовсе сайт не открывается.
                                              0
                                              был небольшой maintenance. простите. мы, всё-таки, ещё маленький проект, и запаса инфраструктуры пока нет.
                                                0
                                                Ну это я так, вдруг вы не в курсе
                                              0
                                              А это значит, что никто не может перейти по ссылкам из моих писем. Это, безусловно, прискорбно.
                                                0
                                                Используйте проверенные, коммерческие сервисы типа мандрилла или сендгрида — и будет вам счастье)
                                                  +1
                                                  Это понятно, я просто тестирую )
                                                    0
                                                    Рома, вижу тебя не оставил равнодушным мой эксперимент.
                                                      0
                                                      Рома, стоит ознакомиться со словами инженер, исследования и эксперименты.
                                                      :)
                                                      Хотя я думаю, ты их итак знаешь. Но в данном случае, явно не понял как и для чего это создано, и как должно работать и даже о ужас в чем суть.

                                                      Как уже и писали суть именно в шаблоне, который не в коде. Потому как это надо в том, числе лично мне.
                                                      Чтобы было не в коде.
                                                      Второе программист написал другим программистам «вот прикол»--сообщество помогает пишет где недостатки, что хорошо.
                                                      Ну и ты хвалишься типа я умнее, есть проверенные сервисы. Молодец-ты умный, знаешь сервисы.
                                                      Мы поняли. Созданы ли они за 24 часа? Можешь ли ты поговорить с их создателями? Интересует ли их твое мнение?
                                                      А нас тут интересовало, но, правда, в разрезе конструктива, а не кто знает больше коммерческих сервисов. :)

                                                Only users with full accounts can post comments. Log in, please.