TL;DR: Mandrill захотел поднять цены в 4 раза. Они нашли способ через интеграцию с MailChimp.

В феврале этого года, как гром среди ясного неба, пришло письмо от Mandrill о том, что с 27го апреля он перестаёт существовать как независимый сервис и теперь чтобы им пользоваться нужно будет интегрировать свой Mandrill аккаунт в платный аккаунт MailChimp. Именно платный, пусть даже и самый дешевый. Вот как выглядит ценник MailChimp:



Напомню, что раньше Mandrill был бесплатным для небольших проектов до 12.000 писем в месяц (около 400 в день). Сейчас же как минимум $20 + сколько напосылаешь писем.

«Вот негодяи!» — подумал я про себя и отправился гуглить и тестить альтернативы, потому как мне как пользователю неприемлемо такое отношение со стороны сервиса.



Детально рассматриваемые в статье альтернативы:

  • MailGun — популярная
  • SparkPost — не такая популярная, но еще лучше

У обоих вариантов есть свои преимущества.




Альтернатива # 1: MailGun — The Email Service For Developers


  • 10,000 бесплатных емайлов в месяц
  • Следующие 500,000 — $0.00050 за штуку
  • Следующие 1,000,000 — $0.00035
  • Следующие 5,000,000 — $0.00015
  • Все остальные будут по $0.00010

Прайсинг довольно простой и без подводных камней.

Теперь что касается процесса интеграции. Здесь и дальше в статье я буду смотреть на мир глазами PHP разработчика, да простят меня остальные сообщества :)

MailGun любят и часто интегрируют поддержку в фреймворки (например, в Laravel) за отличный API. Для того чтобы его попробовать достаточно зарегистрироваться и curl-ом обратиться к endpoint-y со своим API ключом:
curl -s --user 'api:key-3ax6xnjp29jd6fds4gc373sgvjxteol0'     https://api.mailgun.net/v3/samples.mailgun.org/messages     -F from='Excited User <excited@samples.mailgun.org>'     -F to='devs@mailgun.net'     -F subject='Hello'     -F text='Testing some Mailgun awesomeness!'

Для PHP на гитхабе лежит официальная библиотека mailgun-php.

Панель управления содержит удобный dashboard и логи всех писем:



Есть вебхуки для реагирования на различные события:



Для некоторых своих проектов я остановился именно на Майлгане. 10,000 бесплатных писем в месяц хватает за глаза. В случае с Laravel интеграция занимает полчаса, из которых 5 мин вы тратите на указание API ключа и 25 мин на тестирование :)




Альтернатива # 2: SparkPost — Better Email Delivery for Better Customer Engagement


100,000 бесплатных емайлов в месяц (это в 10 раз больше чем у MailGun).



По неизвестным мне причинам, этот сервис не такой популярный и узнал я о нем совершенно случайно — из комментов к какому-то посту.

Кроме 100 тысяч бесплатных писем у него есть еще одна киллер-фича — subaccounts, которую они запилили две недели зазад.

Subaccounts это когда вы каждому своему пользователю выделяете подаккаунт с независимой репутацией. Это даёт много преимуществ. Во-первых, вы можете посмотреть логи по каждому подаккаунту отдельно. Во-вторых, независимая репутация подаккаунтов позволяет применять те или иные меры для пользователей вашего проекта в зависимости от их «кармы» :)

Для моего проекта массовых email-открыток и приглашений Subaccounts API — жизненно необходимая функциональность для выявления и заблаговременного блокирования спамеров.

API у них такой же отличный как и у MailGun и использовать его можно как угодно, хоть из командной строки:

curl -XPOST   https://api.sparkpost.com/api/v1/transmissions   -H "Authorization: <YOUR API KEY>"   -H "Content-Type: application/json"   -d '{"content": {"from": "testing@sparkpostbox.com", "subject": "Oh hey", "text":"Testing SparkPost - the most awesomest email service in the world"}, "recipients": [{"address": "developers+curl@sparkpost.com"}]}' 

Интеграция с PHP происходит с помощью официальной open source библиотеки php-sparkpost и не вызывает никаких затруднений:

use SparkPost\SparkPost;
use GuzzleHttp\Client;
use Ivory\HttpAdapter\Guzzle6HttpAdapter;

$httpAdapter = new Guzzle6HttpAdapter(new Client());
$sparky = new SparkPost($httpAdapter, ['key'=>'<YOUR API KEY>']);

$results = $sparky->transmission->send([
    'from'=>'testing@sparkpostbox.com',
    'html'=>'<html><body><p>Testing SparkPost - the world\'s most awesomest email service!</p></body></html>',
    'subject'=> 'Oh hey!',
    'recipients'=>[
      ['address'=>['email'=>'developers+php@sparkpost.com']]
    ]
]);


Кроме того, слоган SparkPost и данные eDataSource говорят о хорошей доставляемости:



UPDATE: SparkPost официально недоступен из России и Украины. Проблема решается регистрацией через шлюз, например «из Германии» (thx Softer).



В конце отмечу, что мы рассматривали и другие сервисы такие как:


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

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



Ну и опрос напоследок. Если вы не пользователь Mandrill, пожалуйста, нажмите «Воздержаться».
Я пользователь Mandrill и я…

Проголосовало 192 человека. Воздержалось 224 человека.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

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


  1. Softer
    31.03.2016 20:36
    +2

    О как вовремя! Спасибо большое! Я когда искал альтернативы — этих двоих как-то не увидел.


    1. Softer
      31.03.2016 21:03
      +1

      We're sorry. SparkPost is not currently available in your location.

      Хм. Печально. И неожиданно. (Пробовал из Украины)


      1. limonte
        31.03.2016 21:09

        Ничего себе! Если у вас есть пару минут чирканите им в саппорт, очень интересно узнать как они это объясняют. Скорее всего как обычно — из-за бюрократов, но все же интересно узнать от них.


        1. Softer
          31.03.2016 21:12

          Мне проще через шлюз в Германии попробовать, это будет быстрее и эффективнее скорее всего. Тем более что именно оттуда слать и буду :)


          1. limonte
            31.03.2016 21:34

            Ниже сообщают о том, что SparkPost и в России недоступен :/


            1. Softer
              31.03.2016 21:39

              Да, увидел. Зарегался "из Германии" без проблем. Домен в зоне UA "скушал не подавившись".
              PS: Уж очень подкупили они своим лимитом :)


      1. Softer
        31.03.2016 22:42
        +2

        Для истории:
        Недоступна только регистрация. Вход и SMTP-релей работают нормально.


  1. zenn
    31.03.2016 20:40
    +1

    Тоже в данный момент занимаюсь реализацией модуля "рассылок" в своем проекте, спасибо за готовую подборку. П.с. — для обоих проектов выше есть интеграция с swiftmailer, кроме того возможна прямая рассылка через smtp, что достаточно удобно.


  1. gibson
    31.03.2016 20:43
    +1

    Тоже опечалило письмо о переходе на платный режим, но пока руки не доходили найти альтернативу, спасибо вам большое?
    Почему второй сервис хуже, там ведь 100к, а в первом 10 всего, в чем подвох?


    1. limonte
      31.03.2016 20:58

      Нет подвоха. Просто исторически сложилось, что MailGun популярнее.
      Как я отмечал в статье, MailGun очень удобен тем, что его интеграция в Laravel проста как раз-два.
      Раз — добавить в конфиг домен и ключ:

      'mailgun' => array(
          'domain' => 'your-mailgun-domain',
          'secret' => 'your-mailgun-key',
      ),

      Два — собственно сама посылка письма:
      Mail::send('emails.welcome', array('key' => 'value'), function($message)
      {
          $message->to('foo@example.com', 'John Smith')->subject('Welcome!');
      });

      Согласитесь, проще некуда :) Пока что такой удобной интеграции с SparkPost нет и нужно потратить чуть больше человекочасов :)


  1. FranzK
    31.03.2016 21:26
    +1

    Ложка дегтя к рассказу о СпаркПосте: пока что он недоступен в России. Пытался зарегистрировать там аккаунт и получил облом. Возможно, это легко обходится, но я решил не заморачиваться и ушёл на SendGrid.


    1. limonte
      31.03.2016 21:32
      +1

      О как, значит для России и Украины SparkPost пока недоступен. Прошу прощения у всех прочитавших пост, я не мог этого предположить, т.к. нахожусь вне постсоветского пространства. Черт бы побрал всех бюрократов этой планеты, когда они уже поймут, что Интернет не имеет границ.


  1. FeNUMe
    31.03.2016 23:00
    +1

    Очень вовремя, большое спасибо за список альтернатив мандрилу.


  1. Indexator
    31.03.2016 23:35

    curl -s --user 'api:key-3ax6xnjp29jd6fds4gc373sgvjxteol0' \
    Вы свой апи-ключ засветили?


    1. limonte
      31.03.2016 23:42

      Нет конечно :) Это ключ с главной MailGun из примеров использования.


  1. datacompboy
    01.04.2016 00:07
    +1

    "потому как мне как пользователю неприемлемо такое отношение со стороны сервиса." — в смысле, неприемлемо, когда за работу просят деньги?


    1. limonte
      01.04.2016 00:29
      +2

      Нет конечно, вот уже несколько лет как честно покупаю софт/приложения и регулярно доначу. Любая работа должна быть оплачена, а тем более работа айтишников — коллеги как-никак :)
      Неприемлема мне такая резкая смена правил игры в середине игры. Грубо говоря, я арендовал мопед за 100$ в месяц, а теперь мне говорят что мне нужно будет со следующего месяца арендовать вместе с мопедом и автомобиль, хотя я знаю что автомобилем пользоваться не буду.
      И что еще больше меня разозлило, так это небольшой срок (2 месяца) на то, чтобы переехать или подстроиться под MailChimp.


      1. lexnekr
        01.04.2016 01:03

        Эх, помнится в своё время стоило нам повестись на "угрозы" вебвизора о повышении тарифов в 10 (ДЕСЯТЬ, КАРЛ!) раз и купить 1.5 года платного тарифа, как неожиданно… яндекс.метрика купила вебвизов и сперва сделала его бесплатным для активных пользователей директа, а потом и всех остальных. Естественно гораздо раньше, чем истёк оплаченный нами период...


      1. Mekras
        01.04.2016 07:44
        +2

        Судя по тому, что Вы написали в заметке, правильная аналогия должна быть такая: «мне дали мопед покататься бесплатно, а теперь говорят, что если я хочу кататься и дальше, то надо платить. Негодяи!». Вот она — обратная сторона халявы. Многие начинают воспринимать её как своё право, а не как оказанную им любезность. Увы.


        1. Cromathaar
          01.04.2016 11:56

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


        1. FeNUMe
          03.04.2016 05:30
          +1

          С чего вы взяли что автор пользовался бесплатной версией?
          Его аналогия как раз верна: он покупал один продукт, а теперь авторы решили в обязательном порядке впарить ему дополнительный, который ему не нужен(был бы нужен он бы и так купил).


  1. prishelec
    01.04.2016 00:54

    Конечно, радости нет. Но Альтернатив хватит. Спасибо!


  1. kingpin
    01.04.2016 02:13
    +3

    TL;DR: Mandrill захотел поднять цены в 4 раза. Они нашли способ через интеграцию с MailChimp.

    Они просто отказались от разработки сервиса, который стал им не выгоден, и объяснили причины предстоящего изменения (раздел Fork in the road). Нет смысла задирать цену на свой сервис в присутствие дюжины других сервисов по сопоставимой цене и аналогичной функциональности.
    Более того они предложили альтернативу (SparkPost), причём видимо договорились о сохранении цены для переходящих из Mandrill пользователей.
    Update (2/29/16): SparkPost has offered to take on any departing Mandrill users and to honor Mandrill’s pricing for those users.

    Я тоже изучал варианты. SparkPost не подошёл по следующим причинам.
    1. Сервис не поддерживает замены (Substitutions, аналог merge vars в Mandrill) в шаблонах писем при отправке почты через SMTP.
    2. В заголовках конверта «светит» IP-адрес компьютера, с которого вы отправляете почту, что подвергает его угрозе DDoS-атаки:
      Received: from [192.0.2.42] by mandrillapp.com id ba23fe5b763c82f1a4b93af70b15; Thu, 31 Mar 2016 22:24:33 +0000

    Последним пунктом, судя по всему, грешат почти все сервисы кроме Amazon SES, на который мы и переехали.
    SendGrid не угодил тем, что использует сертификат от GoDaddy на своём сайте. (Как и habrahabr!).
    Единственный минус SES, который я пока обнаружил — это отсутствие поддержки шаблонов писем. Впрочем его легко компенсировать, разработав обработку шаблонов в самом приложении. (Для Java сгодился Apache Velocity.)


    1. b1rdex
      01.04.2016 08:35
      +1

      Использую mailgun, проверил текст письма — адреса хоста, с которого отправляли нет.


      1. kingpin
        01.04.2016 11:31
        +1

        Спасибо за информацию. Интегрирую, возможно, с MailGun сайт для надёжности — на случай если SES будет лежать в текущем регионе.


    1. sergiks
      01.04.2016 09:33
      +1

      Почему сертификат от GoDaddy для вас существенный недостаток?


      1. kingpin
        01.04.2016 10:43
        +2

        1. seclists.org/nmap-announce/2007/0
        2. www.lowendtalk.com/discussion/comment/1614869/#Comment_1614869

        Не нравятся они мне после таких отзывов.


    1. david_mz
      01.04.2016 10:11
      +1

      Я бы не рекомендовал SES. Очень много писем уходит в спам (многие их IP-адреса включены в чёрные списки), плюс полное отсутствие какой-либо статистики по письмам, всё надо делать вручную. Впрочем, первого пункта достаточно. У нас ~ 40K писем в месяц, недоставка была очень заметная.
      Мы ушли от них как раз на Мандрилл, и всё было замечательно, пока тот не решил монетизироваться.


      1. kingpin
        01.04.2016 11:02

        В этой ветке напротив отмечают, что у SES высокая степень доставленных писем (их сайт отсылает ~40k в день, а не в месяц, как у вас), и служба поддержки SES оперативно разрешает возникающие проблемы.

        Доставка писем через Mandrill могла занимать от нескольких секунд до часа-двух, особенно на Gmail, что дико раздражало. С серверов SES письма доходят молниеносно.


        1. david_mz
          01.04.2016 11:19
          +2

          Я не могу спорить с чужими скриншотами, сорри. У меня свой опыт, Вы, конечно, имеете полное право набрать свой.


          1. kingpin
            01.04.2016 12:46

            Возможно, с тех пор, когда вы его использовали последний раз, что-то изменилось. Посмотрим.

            В SES мне нравится, что его можно интегрировать с IAM — чрезвычайно удобная штука. Позволяет иметь одну корневую учётку в AWS и несколько вторичных для пользователей или сервисов, которым можно через созданную политику разрешить отправку почты с одного или нескольких конкретных доменов — очень не хватало в Mandrill. Пример политики:

            {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Action": "ses:SendRawEmail",
                        "Resource": [
                          "arn:aws:ses:eu-west-1:555555555555:identity/example.com",
                          "arn:aws:ses:eu-west-1:555555555555:identity/example.org",
                          "arn:aws:ses:us-west-2:555555555555:identity/*"
                        ]
                    }
                ]
            }
            


  1. zaartix
    01.04.2016 02:48

    Вообще я бы предостерег от использования Mailgun. Мы его использовали какое-то время и выяснили, что письма очень часто уходят в спам, нормальные письма разумеется.


  1. pro_co_ru
    01.04.2016 10:30
    +2

    А в чём преимущество использования сторонних сервисов для почтовых рассылок?
    Ведь можно настроить свой, а для сбора статистики использовать, например, Google Analytics (Measurement Protocol).

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


    1. kingpin
      01.04.2016 11:27
      +5

      pdd и Почта Mail.ru не позволят вам отправлять транзакционные и маркетинговые письма в больших объёмах. Меня pdd блокировали едва число писем за несколько минут достигало тысячи.

      Свой почтовый сервер — не вариант при большом количестве писем.

      Вам нужно умудриться, чтобы IP-адрес сервера не попал в чёрные списки (на этот случай вы захотели бы иметь несколько IP в разных AS и, скорее всего, от разных ISP), вам нужно время на его обслуживание, обновление.

      Нужно также гарантировать его высокую доступность — вы же не хотите, чтобы пользователи получали bounce-сообщения, пока ваш сервер лежит, и не получали сообщения при регистрирации или сбросе пароля и т. д.

      Ещё вам нужно где-то хостить ваши почтовые серверы, это тоже деньги.

      Плюс свой почтовый сервер не будет иметь даже пятой части возможностей, присутствующих в сторонних почтовых сервисах.

      Со временем вы начнёте понимать, что чем иметь свой собственный почтовый сервис, который обходится в копеечку и отнимает кучу времени на своё обслуживание, уж лучше доверить доставку почты стороннему сервису, и вместо этого сконцентрироваться на своей основной услуге — сайте.


      1. limonte
        01.04.2016 11:52
        +1

        Жирный плюс Вам от меня в карму. Это исключительный по полезности комментарий для тех, кто не занимался темой отправки писем. Именно на такой ответ я надеялся, когда одобрил комментарий с вопросом.
        pro_co_ru отличный вопрос, не стесняйтесь задавать такие вопросы в будущем.


  1. arodygin
    01.04.2016 13:46

    Спасибо за наводку! Как раз на прошлой неделе перенес все на SendGrid по той же причине, а оказывается есть более "вкусные" варианты.


  1. ktretyak
    01.04.2016 15:45

    Я правильно понимаю, что все подобные сервисы хороши тем, что нет нужды ставить свой (условный) Postfix, добавлять MX, DKIM-подписи… Тоесть выгода — целый сэкономленный день! Так?


    1. BupycNet
      01.04.2016 17:08

      Поддержка почтовой инфраструктуры, ожидание внесения IP в белые списки (нужно время на то, чтобы вам начали доверять)


  1. psykovski
    01.04.2016 15:58
    +1

    Большое спасибо за SparkPost!
    Действительно достойная замена.


  1. djagya
    01.04.2016 15:59
    +1

    К слову об интеграции: для интеграции Sparkpost с Yii2 написал расширение github.com/djagya/yii2-sparkpost.
    Буду рад любым issues и пулл-реквестам!


  1. Kolobus
    01.04.2016 16:22
    +1

    По той же причине искали замену Mandrill.

    Плюсы и минусы Mailgun и SparkPost
    Mailgun
    Плюсы:
    • Обработка входящей почты сделана даже лучше, чем в Mandrill. Роуты с регэкспами — мимими.
    • Лог исходящей почты подробнее, включая неуспешные попытки доставить.
    • Разрешает иногда случайно (!) отправить с незарегистрированного в сервисе домена в from. Это важный плюс.

    Минусы:
    • Почтовые сервисы любят его чуть меньше, чем mandrill. Очень-очень редко, но все же попадает на какой-нибудь странный грейлистинг.
    • Иногда не очень корректно парсит заголовок from входящей почты.

    SparkPost
    Плюсы:
    • 100000 писем, Карл!

    Минусы:
    • Нет обработки входящей почты совсем
    • Строгая проверка адреса отправителя, ошибиться нельзя

    Качество доставки SparkPost пока проверить не довелось, т.к. остановились на Mailgun (нужна входящая почта). SparkPost оставили как запасной вариант если писем станет много.


    1. david_mz
      05.04.2016 13:24

      А SendGrid вы не смотрели?


      1. Kolobus
        05.04.2016 21:55
        +1

        SendGrid, я так понял, сверх 12000 требует уже подписку от $10, даже если отправить 12000+1. В остальном особой разницы с mailgun нет.


    1. isden
      06.04.2016 09:22

      У SparkPost еще и техподдержка тупит, как выяснилось. Уже несколько дней не могут либо решить проблему, либо дать внятный ответ, почему решить её нельзя. Суть проблемы — не получается добавить sending domain в .in по причине неизвестной ошибки.


      1. limonte
        06.04.2016 17:34

        Попробуйте через их support в Spark: https://sparkpost-community.slack.com/messages/support/

        В этом чатике очень оживленно :)


        1. isden
          06.04.2016 17:37

          Да мне проще на тот же mailgun уйти, денег пока заплатить не успел, просто присматривался и оценивал.
          Тратить время и нервы на то, чтобы стать их клиентом — ну его нафиг.


          1. limonte
            06.04.2016 17:46

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


            1. isden
              07.04.2016 18:13
              +2

              Небольшой апдейт — таки дождался внятного ответа от SparkPost:

              we don’t support domains with the .in extension

              Но обещались скоро добавить поддержку.
              Возможно какие-то еще домены не поддерживают.


              1. Anisotropic
                10.04.2016 02:21

                Не написали случайно про сроки?


                1. isden
                  10.04.2016 09:06
                  +1

                  Не, написали только «you should hear back shortly».


  1. zqZhil
    01.04.2016 18:40
    +1

    Попробовал мигрировать на MailGun, сходу уткнулся в несколько неудобных фишек.
    1) нет универсального SMTP, на каждый домен свой SMTP доступ. Вроде мелочь, но с мандрилой все было просто — я прописывал одинаковый SMTP во всех проектах, учитывая небольшие объемы отправляемых писем, даже домен отправителя было добавлять необязательно в систему. Теперь нужно обязательно добавлять домен, создавать SMTP доступ — лишние телодвижения. Можно взять универсальный API — но с ним тоже не все гладко (пункт 3)
    2) Нет общего окна "Все отправленные письма". Когда есть много микро-проектов с небольшим количеством писем — очень удобно "одним махом" посмотреть что где отправлялось, что где не дошло и т.д.
    3) в официальной php библиотеке для их API некоторые ошибки не обрабатываются. В мандриле все просто — если письмо не прошло или еще что-то не так — получаешь SMTP Exception и видишь, что не так. У них API "молча" принимает неправильно сформированное письмо и не выбрасывает никаких ошибок.
    4) чтобы отлаживать доставку нужно использовать отдельный сервер, bin.mailgun.net. Сейчас пример кода для дебага тупо не работает, выкидывает ошибку
    got exception [curl] 51: SSL: no alternative certificate subject name matches target host name 'bin.mailgun.net' [url] https://bin.mailgun.net/****/*****/messages
    Общее впечатление от мейлгана так себе — проще заплатить $20 мандриле и использовать дальше хороший продукт.


    1. Kolobus
      01.04.2016 20:25
      +1

      1) Можно использовать реквизиты SMTP от одного из доменов. Если другие домены тоже добавлены корректно — это нормально работает, хоть и нелогично.


  1. phoenixweiss
    02.04.2016 15:01
    +1

    Пару недель назад тоже был крайне удивлен рассылкой от Мандрила. Радует что всего пару проектов его использовали. Правда, мы переводить планируем на SendPulse. Как раз в течение этой недели займусь, но за статью в любом случае спасибо, правда, вовремя.


  1. HerMajor
    02.04.2016 21:30
    +1

    Зашел на sparkpost.com на главной сразу объявление:
    "Welcome Mandrill Customers! Here’s your migration guide"
    Прям красавцы пользуют момент. О чем думают продаваны мандрила?


    1. FeNUMe
      03.04.2016 05:39

      Мандриловцы сами с ними договорились, там все честно.