Документация для разработчиков

PHP SDK

dashamail/dashamail-php — официальная библиотека для PHP 7.2+. Один класс curl под капотом, никаких зависимостей в composer.json кроме самого PHP.

Установкаcomposer require dashamail/dashamail-php
ТребованияPHP 7.2+, расширения curl и json
Пространство имёнDashaMail\
Исходникиgithub.com/DashaMail/dashamail-php
ЛицензияMIT

Быстрый старт #

use DashaMail\DashaMail;

$dashamail = new DashaMail('YOUR_API_KEY');

$balance = $dashamail->account->balance();
echo $balance['balance'];

$list = $dashamail->lists->create('Newsletter');
$dashamail->lists->addMember($list['list_id'], 'subscriber@example.com', [
    'merge_1' => 'Иван',
]);

$dashamail->transactional->send(
    'subscriber@example.com',
    'sender@yourdomain.com',
    '<p>Спасибо за подписку!</p>',
    ['subject' => 'Добро пожаловать']
);

Ресурсы #

DashaMail — фасад с одним публичным свойством на каждый раздел API. Методы возвращают DashaMail\Response — объект, который ведёт себя как массив/список data — либо бросают DashaMail\Exception\ApiException.

СвойствоКлассРаздел
->listsResource\ListsАдресные базы
->segmentsResource\SegmentsСегменты
->campaignsResource\CampaignsРассылки, включая A/B-тесты
->automationsResource\AutomationsАвтоматизации
->workflowsResource\WorkflowsСценарии визуального конструктора
->templatesResource\TemplatesШаблоны
->reportsResource\ReportsОтчёты, включая результаты A/B
->transactionalResource\TransactionalТранзакционные письма
->accountResource\AccountАккаунт
->dialogsResource\DialogsДиалоги
->routerResource\RouterОбработка входящих
->imagesResource\ImagesИзображения

Пагинация #

$start = 0;
do {
    $page = $dashamail->lists->members($listId, ['start' => $start, 'limit' => 100]);
    foreach ($page as $member) {
        echo $member['email'] . "\n";
    }
    $start += $page->getLimit();
} while ($page->hasMore());

Ошибки #

Каждый неуспешный ответ бросает подкласс DashaMail\Exception\ApiException, выбранный по HTTP-статусу. У любого исключения есть getApiCode() — тот же код, что в справочнике ошибок, getHttpStatus() и getDetails().

HTTPКласс исключения
401AuthenticationException
402PaymentRequiredException
403AuthorizationException
404NotFoundException
409ConflictException
413PayloadTooLargeException
422ValidationException
429RateLimitException — есть getRetryAfter()
5xxServerException

Если ответ вообще не пришёл (обрыв сети, таймаут) — бросается DashaMail\Exception\NetworkException, отдельно от ошибок самого API.

Изображения #

// Готовый файл на диске — без ручного base64:
$result = $dashamail->images->optimizeFile('/path/to/banner.png');

// Сырые байты в ответ вместо base64 в JSON:
$binary = $dashamail->images->optimizeFileBinary('/path/to/banner.png');
$binary->saveTo('/path/to/banner-optimized.png');

Полная документация, включая настройку таймаута и базового URL, — в README репозитория. Вернуться к обзору всех SDK.

DashaMail хранит и защищает ваши данные на территории Российской Федерации

Подробнее...