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.
| Свойство | Класс | Раздел |
|---|---|---|
->lists | Resource\Lists | Адресные базы |
->segments | Resource\Segments | Сегменты |
->campaigns | Resource\Campaigns | Рассылки, включая A/B-тесты |
->automations | Resource\Automations | Автоматизации |
->workflows | Resource\Workflows | Сценарии визуального конструктора |
->templates | Resource\Templates | Шаблоны |
->reports | Resource\Reports | Отчёты, включая результаты A/B |
->transactional | Resource\Transactional | Транзакционные письма |
->account | Resource\Account | Аккаунт |
->dialogs | Resource\Dialogs | Диалоги |
->router | Resource\Router | Обработка входящих |
->images | Resource\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 | Класс исключения |
|---|---|
| 401 | AuthenticationException |
| 402 | PaymentRequiredException |
| 403 | AuthorizationException |
| 404 | NotFoundException |
| 409 | ConflictException |
| 413 | PayloadTooLargeException |
| 422 | ValidationException |
| 429 | RateLimitException — есть getRetryAfter() |
| 5xx | ServerException |
Если ответ вообще не пришёл (обрыв сети, таймаут) — бросается
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.