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

Python SDK

Пакет dashamail-python, импортируется как dashamail. HTTP — через встроенный urllib, без requests и прочих зависимостей.

Установкаpip install dashamail-python
ТребованияPython 3.7+, только стандартная библиотека
Импортimport dashamail
Исходникиgithub.com/DashaMail/dashamail-python
ЛицензияMIT

Имя дистрибутива на PyPI — dashamail-python, а не голое dashamail: короткое имя занято сторонним неофициальным пакетом. На import dashamail в коде это не влияет.

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

from dashamail import DashaMail

dashamail = DashaMail("YOUR_API_KEY")

balance = dashamail.account.balance()
print(balance["balance"])

created = dashamail.lists.create("Newsletter")
dashamail.lists.add_member(created["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.ApiException. Необязательные параметры передаются именованными аргументами Python (**kwargs) с теми же именами полей, что и в теле запроса.

АтрибутКлассРаздел
.listsresources.ListsАдресные базы
.segmentsresources.SegmentsСегменты
.campaignsresources.CampaignsРассылки, включая A/B-тесты
.automationsresources.AutomationsАвтоматизации
.workflowsresources.WorkflowsСценарии визуального конструктора
.templatesresources.TemplatesШаблоны
.reportsresources.ReportsОтчёты, включая результаты A/B
.transactionalresources.TransactionalТранзакционные письма
.accountresources.AccountАккаунт
.dialogsresources.DialogsДиалоги
.routerresources.RouterОбработка входящих
.imagesresources.ImagesИзображения

Пагинация #

start = 0
while True:
    page = dashamail.lists.members(list_id, start=start, limit=100)
    for member in page:
        print(member["email"])
    start += page.get_limit()
    if not page.has_more():
        break

Ошибки #

Каждый неуспешный ответ поднимает подкласс dashamail.ApiException, выбранный по HTTP-статусу. У любого исключения есть .api_code — тот же код, что в справочнике ошибок, .http_status и .details.

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

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

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

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

# Сырые байты в ответ вместо base64 в JSON:
binary = dashamail.images.optimize_file_binary("/path/to/banner.png")
binary.save_to("/path/to/banner-optimized.png")

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

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

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