За последние пару лет я столкнулся с различными проблемами, связанными как с приложениями со списком рассылки с открытым исходным кодом, так и с платными облачными поставщиками. В этом уроке я расскажу вам о моем принятии Mailgun.com — экономичного решения, которым я успешно пользуюсь уже два года.
PHPList с открытым исходным кодом всегда был довольно сложным, и я потерял интерес, когда они начали пересматривать свой пользовательский интерфейс в направлениях, которые казались более сложными, а не менее. В середине моей инициативной кампании по сбору подписей в Сиэтле Mailchimp отключил мой список адресов электронной почты, заявив, что я не получил должного разрешения от участников, хотя каждый из них лично дал нашей кампании свои электронные письма на бумажных бланках. Затем я обнаружил Mailgun и решил создать свое собственное решение, которое я использую с тех пор.
Mailgun — это облачная пушка электронной почты SaaS, такая как SendGrid . Это на самом деле бесплатно до 10000 электронных писем в месяц. Mailgun невероятно мощный и предлагает хорошо документированный API на различных популярных языках. Он предоставляет возможности как отправки, так и получения, последнее из которых может быть довольно сложно разработать с нуля. Хотя Mailgun не предоставляет шаблонов для насыщенных HTML-рассылок, он предоставляет платформу, на которой вы можете построить что угодно.
Я использую списочные сервисы Mailgun, чтобы общаться с друзьями и общаться с моими социальными сообществами, а также для бизнеса и маркетинга. Для большинства моих потребностей хорошо работают простые письма в формате HTML.
В этом руководстве я собираюсь рассказать вам о ListApp, апплете, который основан на API Списка Mailgun . В следующем уроке я покажу вам, как создать собственную схему списка адресов электронной почты на собственном PHP и MySQL. У каждого подхода есть свои преимущества.
Если вы в первую очередь хотите вещать и хотите использовать собственный облачный веб-интерфейс Mailgun для управления вашим списком, то ListApp может быть лучшим вариантом. Вот пример веб-интерфейса Mailgun для управления списками:
Используя ListApp, основная копия вашего списка хранится в облаке на Mailgun и синхронизируется локально через API с вашей установкой ListApp.
Если вы хотите создать групповые списки адресов электронной почты или хотите получить более детальный контроль над своей электронной почтой и нуждами адресации, то вы можете узнать, как создавать функции списков с нуля. В следующем уроке мы все еще будем полагаться на движок Mailgun и API, но мы будем управлять списками в приложении, а не с помощью Mailgun’s List API. Это также позволяет избежать сложности синхронизации.
Open Source ListApp
ListApp предоставляет простой веб-интерфейс для распространенных сценариев, которые вы можете использовать с функциями списка рассылки Mailgun :
- синхронизация ваших списков и членов списков из облака Mailgun
- создание, обновление и удаление списков
- импорт членов в список
- отправка сообщений в списки
Вы можете установить ListApp в любой системе на основе LAMP. Я опубликовал мое общее руководство по установке сервера Ubuntu LAMP для справки. Приложение содержит инструкции по настройке ListApp на сервере Ubuntu с 1 ГБ ОЗУ. Требуется PHP 5.x, MySQL 5.x, а также библиотеки PEAR и cURL.
ListApp написан на Yii Framework для PHP . Вам не нужно ничего знать о среде Yii для запуска приложения. Если вы предпочитаете не использовать Yii, вы можете использовать компонент Yiigun, используемый в ListApp. Yiigun.php — это, по сути, файл класса PHP с методами и помощниками для использования SDK Mailgun Mailing List .
Вам нужно зарегистрировать бесплатную (или более высокого уровня) учетную запись Mailgun , чтобы получить ключи API для файла настроек. Если у вас есть платная учетная запись, вам нужно добавить свои домены и создать настройки DNS для их использования. Если вы используете бесплатную учетную запись, ваш домен будет yourchoice.mailgun.org. Следовательно, ваш список адресов может быть [email protected]. Ваши ключи API Mailgun будут показаны на домашней странице панели управления .
Как использовать Mailgun List API
Использование API Списка рассылки Mailgun очень просто. Mailgun предоставляет свою собственную документацию API Списка рассылки, чтобы помочь нам. Вы можете посмотреть, как ListApp использует Mailgun API в нашем компоненте Yiigun.php . ListApp использует Mailgun PHP SDK для взаимодействия с Mailgun.
Инициализация Mailgun PHP SDK
Обязательно следуйте инструкциям по настройке ключей API во время установки. Всякий раз, когда используется класс Yiigun, вызывается конструктор, создавая безопасную инициализацию с помощью API Mailgun:
1
2
3
4
|
function __construct() {
// initialize mailgun connection
$this->mg = new Mailgun(Yii::app()->params[‘mailgun’][‘api_key’]);
}
|
Создание списка
Вы можете создавать новые списки рассылки, используя пункты меню справа от ListApp. Каждый список требует имя, список адресов электронной почты и описание. Когда вы создаете новый список, ListApp также загружает список и его настройки в Mailgun. Вы также можете обновить свойства для любого списка.
Вот как мы создаем новый список:
1
2
3
4
|
public function listCreate($newlist) {
$result = $this->mg->post(«lists»,array(‘address’=>$newlist->address,’name’=>$newlist->name,’description’ => $newlist->description,’access_level’ => $newlist->access_level));
return $result->http_response_body;
}
|
Вот как мы обновляем свойства списка рассылки:
1
2
3
4
5
6
7
8
9
|
public function listUpdate($existing_address,$model) {
$result = $this->mg->put(«lists/».$existing_address,array(
‘address’=>$model->address,
‘name’ => $model->name,
‘description’ => $model->description,
‘access_level’ => $model->access_level
));
return $result->http_response_body;
}
|
Импорт членов в список
Вы можете импортировать новых членов в любой список из ListApp. Для этой функции мы используем библиотеки синтаксического анализа списка адресов электронной почты PEAR. Вы можете вставить любой список адресов электронной почты в форме Personal Name <[email protected]>
, разделенные запятыми или новыми строками. ListApp добавит участников локально и загрузит их на Mailgun.com.
Для массового добавления участников сначала создадим строку JSON новых участников для загрузки — вот пример кода, который вы можете использовать.
1
2
3
4
5
6
7
8
|
$json_upload ='[‘
foreach ($addresses as $i) {
$json_upload.='{‘;
$json_upload.=’»name»: «‘.$i->name.’», ‘;
$json_upload.=’»address»: «‘.$i->address.’»‘;
$json_upload.=’},’;
}
$json_upload.=’]’;
|
Затем мы вызываем функцию массовой загрузки с этой строкой JSON:
1
2
3
4
5
6
7
8
|
public function memberBulkAdd($list=»,$json_str=») {
$result = $this->mg->post(«lists/».$list.’/members.json’,array(
‘members’ => $json_str,
‘subscribed’ => true,
‘upsert’ => ‘yes’
));
return $result->http_response_body;
}
|
Вы также можете добавлять отдельных членов в списки, используя опцию меню « Добавить участника» .
Отправка сообщения
Вы можете отправить сообщение в любой список, используя меню справа. Мы доставляем исходящее сообщение в Mailgun, как и любое другое сообщение. $to
To address — это адрес списка рассылки Mailgun, например [email protected]:
1
2
3
4
5
6
7
|
public function send_simple_message($to=»,$subject=»,$body=»,$from=») {
if ($from == »)
$from = Yii::app()->params[‘supportEmail’];
$domain = Yii::app()->params[‘mail_domain’];
$result = $this->mg->sendMessage($domain,array(‘from’ => $from, ‘to’ => $to, ‘subject’ => $subject, ‘text’ => $body, ));
return $result->http_response_body;
}
|
Затем Mailgun управляет доставкой сообщения отдельным получателям.
Вы можете увидеть больше примеров API Списка Mailgun в действии здесь .
Вы также можете использовать некоторые из общих переменных получателей Mailgun для включения личных приветствий, таких как Hi %recipient_fname%
(см. Документацию по шаблонным переменным ).
Синхронизация списков и членов списка
Вы также можете управлять своими списками через веб-интерфейс Mailgun. Затем, когда вы открываете ListApp, нажмите на опцию Синхронизировать . При этом будут получены копии всех существующих списков рассылки в Mailgun и загружены все их участники в локальную базу данных. По сути, он синхронизирует ваш список рассылки с сайта Mailgun.com. Эта опция не синхронизируется.
Вот функция fetchLists
. Использование Mailgun PHP SDK делает это довольно простым:
1
2
3
4
|
public function fetchLists() {
$result = $this->mg->get(«lists»);
return $result->http_response_body;
}
|
Вот как мы выбираем участников:
1
2
3
4
|
public function fetchListMembers($address) {
$result = $this->mg->get(«lists/».$address.’/members’);
return $result->http_response_body;
}
|
Расширение ListApp
Текущая версия ListApp общается с Mailgun в режиме реального времени и не имеет обширной обработки ошибок. В долгосрочной перспективе было бы хорошо добавить асинхронные запросы API в очереди.
В дополнение к собственной документации Mailgun API Mailing List (которая включает примеры на cURL, Ruby, PHP, Python, Java и C #), вы можете просматривать, извлекать и адаптировать файл Yiigun.php и его функции для вашего собственного PHP-приложения или фреймворка.
Если вы не используете Yii, вам нужно использовать composer для установки SDK согласно инструкциям по установке Mailgun .
Что вы узнали
Теперь у вас есть апплет, который может создавать облачные списки и управлять ими через API Mailgun и использовать их для информирования и обновления ваших друзей, коллег и клиентов. Во второй части я покажу вам, как создавать списки адресов электронной почты в PHP и MySQL. Мы по-прежнему будем полагаться на движок Mailgun и API, но мы будем управлять списками в приложении, а не с помощью Mailgun’s List API.
Пожалуйста, не стесняйтесь оставлять свои вопросы и комментарии ниже. Вы также можете связаться со мной в Twitter @reifman или написать мне напрямую. Следуйте за моей страницей инструктора Tuts +, чтобы видеть будущие статьи в этой серии.