Официальные библиотеки (SDK) — самый простой способ подключить Haskimail к приложению. Они берут на себя запросы к API, авторизацию и разбор ответов, а вы работаете с обычными методами своего языка. Библиотеки есть для Go, PHP, Python, Node.js и Java.

## Установка

| Язык    | Версия | Команда или зависимость                                                | Требования                                           |
| ------- | ------ | ---------------------------------------------------------------------- | ---------------------------------------------------- |
| Go      | 1.3.0  | `go get github.com/DashaMail/haskimail-go@v1.3.0`                      | Go 1.21 и новее                                      |
| PHP     | 1.2.0  | `composer require dashamail/haskimail-php:^1.2.0`                      | Composer                                             |
| Python  | 1.2.0  | `pip install --upgrade haskimail`                                      | Python 3.10 и новее                                  |
| Node.js | 1.2.0  | `npm install haskimail@latest --save`                                  | npm                                                  |
| Java    | 1.3.0  | Maven: groupId `ru.haskimail`, artifactId `haskimail`, version `1.3.0` | Java 8 и новее, Apache HttpClient 5.x, Jackson 2.15+ |

**Важно:** если менеджер пакетов не находит указанную версию Python, Node.js или Java, значит, она ещё не опубликована в PyPI, npm или Maven Central. Попробуйте позже.

Для работы с библиотекой нужен серверный API-ключ. Где его взять — в статье [«Типы ключей. API-ключи, SMTP-ключи»](https://help.haskimail.ru/hc/haskimail/articles/1768993671-tipy-klyuchey-api-klyuchi-smtp-klyuchi).

## Отправка писем

| Язык    | Одно письмо               | Пакет писем            | Пакет писем по шаблонам            |
| ------- | ------------------------- | ---------------------- | ---------------------------------- |
| Go      | `DeliverMessage`          | `DeliverMessages`      | `DeliverMessagesWithTemplate`      |
| PHP     | `sendEmail`               | `sendEmailBatch`       | `sendEmailBatchWithTemplate`       |
| Python  | `send_email`              | `send_email_batch`     | `send_email_batch_with_templates`  |
| Node.js | `sendEmail`               | `sendEmailBatch`       | `sendEmailBatchWithTemplates`      |
| Java    | `deliverMessage(message)` | `deliverMessage(List)` | `deliverMessageWithTemplate(List)` |

Пакетные методы отправляют до 500 писем за один запрос и возвращают результат по каждому письму. Если ваше приложение отправляет много писем в цикле, замените цикл на пакетную отправку: это быстрее и требует меньше запросов. Как работает пакет и как читать результаты — в статье [«Пакетная отправка писем через API»](https://help.haskimail.ru/hc/haskimail/articles/1792601829-api).

Если письмо не удалось принять, API отвечает HTTP 422 и кодом ошибки. Проверьте, как библиотека сообщает об этом в вашем коде, и обработайте ошибки по статье «Ответ API при отправке письма и коды ошибок».

## Шаблоны и статистика

| Возможность                                                                     | Go  | PHP | Python | Node.js | Java |
| ------------------------------------------------------------------------------- | --- | --- | ------ | ------- | ---- |
| [Проверка шаблона](https://help.haskimail.ru/hc/haskimail/articles/1792602312-) | да  | да  | да     | да      | нет  |
| Статистика по платформам                                                        | да  | да  | да     | да      | да   |
| Статистика по почтовым клиентам и браузерам                                     | да  | да  | да     | да      | нет  |

Подробнее о разделах статистики — в статье «Статистика по устройствам, почтовым клиентам и браузерам». В тех библиотеках, где нужного метода нет, можно обратиться к [API](https://haskimail.ru/developer/api/overview) напрямую.

## Примеры кода

Примеры для каждого языка — на странице [«Официальные библиотеки»](https://haskimail.ru/developer/integration/official-libraries) документации и в репозиториях библиотек на GitHub.

Если ваш язык или фреймворк не поддерживается, подключитесь через HTTP API или SMTP — см. [«Способы интеграции с Haskimail»](https://help.haskimail.ru/hc/haskimail/articles/1768992299-cposoby-integracii-s-haskimail). Для Django и Flask есть отдельное [руководство](https://help.haskimail.ru/hc/haskimail/articles/1778856588-rukovodstvo-po-otpravke-pisem-cherez-haskimail-django-i-flask).