PHPackages                             timurrodya/enkod-laravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. timurrodya/enkod-laravel

ActiveLibrary[Framework](/categories/framework)

timurrodya/enkod-laravel
========================

Enkod module for Laravel

20PHP

Since Jan 28Pushed 5mo ago2 watchersCompare

[ Source](https://github.com/timurrodya/enkod-laravel)[ Packagist](https://packagist.org/packages/timurrodya/enkod-laravel)[ RSS](/packages/timurrodya-enkod-laravel/feed)WikiDiscussions main Synced 2d ago

READMEChangelogDependenciesVersions (1)Used By (0)

Enkod
=====

[](#enkod)

Требования
----------

[](#требования)

- Версии PHP: ^8.1
- Версии Guzzle": ^7.2

Установка
---------

[](#установка)

Вы можете установить пакет через composer:

```
composer require timurrodya/enkod-laravel
```

Публикация конфигурационного файла. Выполните `artisan` команду

```
php artisan vendor:publish --provider='Timurrodya\Enkod\EnkodServiceProvider' --tag=config
```

Настройка проекта осществляется через `.env` вашего проекта. Вам необходимо указать три параметра

- `ENKOD_API_KEY` - apiKey для раоты с API Enkod
- `ENKOD_BASE_URL` - адрес Api Enkod по умолчанию
- `ENKOD_VERSION` - версия api, по умолчанию v1

#### `mail` - Отправка сообщения единственному получателю

[](#mail---отправка-сообщения-единственному-получателю)

```
/**
 * @param SendEmailDto|array{
 *     messageId: int,
 *     email: string,
 *     snippets?: array,
 *     attachments?: array
 * } $data
 * @return bool
 * @throws Exception
 */
public function mail(SendEmailDto|array $data): bool
// Через DTO объект
$enkod->mail(new SendEmailDto(
    messageId: 123,
    email: 'user@example.com',
    snippets: ['name' => 'John'],
    attachments : [
        [
            'fileName' => 'test.pdf',
            'mimeType' => 'application/pdf',
            'content' => 'JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu...'
        ]
));

// Через массив (legacy поддержка)
$enkod->mail([
    'messageId' => 123,
    'email' => 'user@example.com',
    'snippets' => ['name' => 'John'],
    'attachments' => [
        [
            'fileName' => 'test.pdf',
            'mimeType' => 'application/pdf',
            'content' => 'JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu...'
        ]
]);
```

#### `smtp` - Отправка email-сообщения по API для работы с сервисом как с SMTP

[](#smtp---отправка-email-сообщения-по-api-для-работы-с-сервисом-как-с-smtp)

```
/**
 * @param string $sendingDomain Домен отправки
 * @param SmtpEmailDto|array{
 *     to: string|array,
 *     subject: string,
 *     body?: string,
 *     html?: string,
 *     from?: string,
 *     fromName?: string,
 *     cc?: string|array,
 *     bcc?: string|array,
 *     replyTo?: string,
 *     attachments?: array
 * } $data
 * @return bool
 * @throws Exception
 */
public function smtp(string $sendingDomain, SmtpEmailDto|array $data): bool

// Через DTO объект
use Timurrodya\Enkod\Dto\SmtpEmailDto;
use Timurrodya\Enkod\Dto\AttachmentDto;

$enkod->smtp(
    'example.com',
    new SmtpEmailDto(
        to: 'recipient@example.com',
        subject: 'Test Email',
        body: 'Plain text version',
        html: 'HTML version',
        from: 'sender@example.com',
        fromName: 'Sender Name',
        cc: ['cc@example.com'],
        bcc: ['bcc@example.com'],
        replyTo: 'reply@example.com',
        attachments: [
            new AttachmentDto(
                fileName: 'document.pdf',
                mimeType: 'application/pdf',
                content: 'JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu...'
            )
        ]
    )
);

// Через массив (legacy поддержка)
$enkod->smtp('example.com', [
    'to' => 'recipient@example.com',
    'subject' => 'Test Email',
    'body' => 'Plain text version',
    'html' => 'HTML version',
    'from' => 'sender@example.com',
    'fromName' => 'Sender Name',
    'cc' => ['cc@example.com'],
    'bcc' => ['bcc@example.com'],
    'replyTo' => 'reply@example.com',
    'attachments' => [
        [
            'fileName' => 'document.pdf',
            'mimeType' => 'application/pdf',
            'content' => 'JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu...'
        ]
    ]
]);

// Отправка нескольким получателям
$enkod->smtp('example.com', [
    'to' => ['recipient1@example.com', 'recipient2@example.com'],
    'subject' => 'Test Email',
    'html' => 'HTML version',
]);
```

#### `messageCreate` - Создание шаблона сообщения для отправки по API

[](#messagecreate---создание-шаблона-сообщения-для-отправки-по-api)

Метод создает шаблон email-сообщения в системе Enkod. Созданный шаблон можно использовать для отправки через методы `mail()` или `mails()`.

**Важно:** Этот метод создает шаблон сообщения, но не отправляет его. Для отправки используйте методы `mail()` или `mails()` с полученным `messageId`.

```
/**
 * @param MessageCreateDto|array{
 *     subject: string,
 *     fromEmail: string,
 *     fromName: string,
 *     html: string,
 *     plainText: string,
 *     isTransaction?: bool,
 *     isActive?: bool,
 *     replyToEmail?: string,
 *     replyToName?: string,
 *     tags?: array,
 *     utm?: object,
 *     urlParams?: object
 * } $data
 * @return array|string Возвращает массив с данными созданного сообщения (включая messageId) или строку с ошибкой
 * @throws Exception
 */
public function messageCreate(MessageCreateDto|array $data): array|string
```

**Параметры:**

- `subject` (string, обязательный) - Тема письма. Не может быть пустой.
- `fromEmail` (string, обязательный) - Email адрес отправителя. Должен быть валидным email.
- `fromName` (string, обязательный) - Имя отправителя. Не может быть пустым.
- `html` (string, обязательный\*) - HTML версия письма. Обязателен, если не указан `plainText`.
- `plainText` (string, обязательный\*) - Текстовая версия письма. Обязателен, если не указан `html`.
- `isTransaction` (bool, опциональный, по умолчанию `false`) - Флаг транзакционного письма.
- `isActive` (bool, опциональный, по умолчанию `false`) - Флаг активности шаблона.
- `replyToEmail` (string, опциональный) - Email для ответа. Должен быть валидным email, если указан.
- `replyToName` (string, опциональный) - Имя для ответа.
- `tags` (array, опциональный, по умолчанию `[]`) - Массив тегов для категоризации сообщения.
- `utm` (object, опциональный, по умолчанию `{}`) - Объект с UTM-метками для отслеживания.
- `urlParams` (object, опциональный, по умолчанию `{}`) - Объект с дополнительными параметрами URL.

**Валидация:**

- `subject` не может быть пустой строкой
- `fromEmail` должен быть валидным email адресом
- `fromName` не может быть пустой строкой
- Хотя бы один из `html` или `plainText` должен быть указан (не пустой)
- `replyToEmail` должен быть валидным email, если указан
- `tags` должен быть массивом
- `utm` должен быть объектом
- `urlParams` должен быть объектом

**Примеры использования:**

```
// Через DTO объект
use Timurrodya\Enkod\Dto\MessageCreateDto;

$result = $enkod->messageCreate(new MessageCreateDto(
    subject: 'Добро пожаловать!',
    fromEmail: 'noreply@example.com',
    fromName: 'Команда Example',
    html: 'Добро пожаловать!Спасибо за регистрацию.',
    plainText: 'Добро пожаловать! Спасибо за регистрацию.',
    isTransaction: false,
    isActive: true,
    replyToEmail: 'support@example.com',
    replyToName: 'Служба поддержки',
    tags: ['welcome', 'registration'],
    utm: (object)['source' => 'website', 'medium' => 'email'],
    urlParams: (object)['ref' => 'api']
));

// messageId можно получить из результата
$messageId = $result['id'] ?? $result['messageId'] ?? null;

// Теперь можно отправить сообщение используя созданный шаблон
if ($messageId) {
    $enkod->mail([
        'messageId' => $messageId,
        'email' => 'user@example.com',
        'snippets' => ['name' => 'Иван']
    ]);
}
```

```
// Через массив (legacy поддержка)
$result = $enkod->messageCreate([
    'subject' => 'Добро пожаловать!',
    'fromEmail' => 'noreply@example.com',
    'fromName' => 'Команда Example',
    'html' => 'Добро пожаловать!Спасибо за регистрацию.',
    'plainText' => 'Добро пожаловать! Спасибо за регистрацию.',
    'isTransaction' => false,
    'isActive' => true,
    'replyToEmail' => 'support@example.com',
    'replyToName' => 'Служба поддержки',
    'tags' => ['welcome', 'registration'],
    'utm' => [
        'source' => 'website',
        'medium' => 'email'
    ],
    'urlParams' => [
        'ref' => 'api'
    ]
]);
```

```
// Минимальный пример (только обязательные поля)
$result = $enkod->messageCreate([
    'subject' => 'Тестовое письмо',
    'fromEmail' => 'sender@example.com',
    'fromName' => 'Отправитель',
    'html' => 'Привет!',
    'plainText' => 'Привет!'
]);
```

**Возвращаемое значение:**

Метод возвращает массив с данными созданного сообщения. Обычно содержит:

- `id` или `messageId` - идентификатор созданного шаблона (используйте его для отправки)
- Другие данные о созданном сообщении согласно API Enkod

**Использование созданного шаблона:**

После создания шаблона вы получите `messageId`, который можно использовать для отправки:

```
// Создаем шаблон
$result = $enkod->messageCreate([...]);
$messageId = $result['id'] ?? $result['messageId'];

// Отправляем одному получателю
$enkod->mail([
    'messageId' => $messageId,
    'email' => 'user@example.com',
    'snippets' => ['name' => 'Иван']
]);

// Или отправляем нескольким получателям
$enkod->mails($messageId, (object)[
    'email' => 'user1@example.com',
    'snippets' => ['name' => 'Иван']
]);
```

- [Отправка сообщения нескольким получателям](https://openapi.enkod.io/#tag/Emails/paths/~1v1~1mails~1/post) @method bool mails(int $messageId, object $recipients)
- [Создание шаблона сообщения](https://openapi.enkod.io/#tag/Emails/paths/~1v1~1message~1create~1/post) @method array|string messageCreate(MessageCreateDto|array $data)
- [Создание мгновенного, запланированного или черновика сообщения](https://openapi.enkod.io/#/emails/paths/~1v1~1message~1onetime~1/post) @method array messageOnetime(MessageOnetimeDto|array $data)
- [Получение контента сообщения по id](https://openapi.enkod.io/#/emails/paths/~1v1~1message~1%7Bid%7D~1content~1/get) @method MessageContentDto getMessageContent(int $id)
- [Получение сниппетов сообщения по id](https://openapi.enkod.io/#/emails/paths/~1v1~1message~1%7Bid%7D~1snippets~1/get) @method MessageSnippetsDto getMessageSnippets(int $id)
- [Отправка email-сообщения по API для работы с сервисом как с SMTP](https://openapi.enkod.io/#/emails/paths/~1smtp~1%7Bsendingdomain%7D~1/post) @method bool smtp(string $sendingDomain, SmtpEmailDto|array $data)

#### `getMessageContent` — получение контента сообщения по id

[](#getmessagecontent--получение-контента-сообщения-по-id)

Метод возвращает контент существующего сообщения (шаблона) по его идентификатору. Ответ приходит в виде DTO `MessageContentDto`.

```
/**
 * @param int $id Идентификатор сообщения
 * @return MessageContentDto Контент сообщения (subject, fromEmail, fromName, html, plainText, tags, utm, urlParams и др.)
 * @throws Exception
 */
public function getMessageContent(int $id): MessageContentDto
```

**Поля DTO ответа (`MessageContentDto`):** `id`, `subject`, `fromEmail`, `fromName`, `html`, `plainText`, `isTransaction`, `isActive`, `replyToEmail`, `replyToName`, `tags`, `utm`, `urlParams`.

**Пример использования:**

```
use Timurrodya\Enkod\Dto\MessageContentDto;

$content = $enkod->getMessageContent(123);

echo $content->subject;
echo $content->fromEmail;
echo $content->html;
// или массив
$array = $content->toArray();
```

#### `getMessageSnippets` — получение сниппетов сообщения по id

[](#getmessagesnippets--получение-сниппетов-сообщения-по-id)

Метод возвращает список сниппетов (переменных) для сообщения/шаблона по его идентификатору. Ответ приходит в виде DTO `MessageSnippetsDto`.

```
/**
 * @param int $id Идентификатор сообщения
 * @return MessageSnippetsDto Сниппеты сообщения
 * @throws Exception
 */
public function getMessageSnippets(int $id): MessageSnippetsDto
```

**Поля DTO ответа (`MessageSnippetsDto`):** `messageId`, `snippets`.

**Пример использования:**

```
use Timurrodya\Enkod\Dto\MessageSnippetsDto;

$snippetsDto = $enkod->getMessageSnippets(123);
$snippets = $snippetsDto->snippets;
```

#### `messageOnetime` - Создание мгновенного, запланированного или черновика сообщения

[](#messageonetime---создание-мгновенного-запланированного-или-черновика-сообщения)

Метод создает разовое сообщение (может быть черновиком или запланированным), которое можно сразу отправить конкретному получателю без предварительного сохранения шаблона.

```
/**
 * @param MessageOnetimeDto|array{
 *     message: MessageCreateDto|array,
 *     isDraft?: bool,
 *     to?: object|array|null,
 *     deliveryDate?: string|\Carbon\Carbon|null // формат Y-m-d H:i или Carbon
 * } $data
 * @return array Ответ API Enkod в виде массива (json)
 * @throws Exception
 */
public function messageOnetime(MessageOnetimeDto|array $data): array
```

**Параметры:**

- `message` (MessageCreateDto|array, обязательный) — тело сообщения в формате DTO (поля как в `messageCreate`: `subject`, `fromEmail`, `fromName`, `html`, `plainText`, `replyToEmail`, `replyToName`, `tags`, `utm`, `urlParams`).
- `isDraft` (bool, опционально, по умолчанию `true`) — флаг создания черновика.
- `to` (object|array|null, опционально) — получатель (например `{ email: "user@example.com", snippets: { name: "Иван" } }`).
- `deliveryDate` (string|Carbon|null, опционально) — время плановой отправки (`Y-m-d H:i`) или `Carbon`. Если не указано — немедленная отправка/сохранение черновика.

**Валидация в DTO (`MessageOnetimeDto`):**

- `message` должен быть `MessageCreateDto` или массив, который конвертируется в `MessageCreateDto`.
- `to`, если указан, должен быть объектом (или массивом, который приведётся к объекту).
- `deliveryDate`, если строка, парсится в `Carbon` и отправляется в формате `Y-m-d H:i`.

**Примеры использования:**

```
use Timurrodya\Enkod\Dto\MessageOnetimeDto;
use Carbon\Carbon;

// Немедленная отправка
$result = $enkod->messageOnetime(new MessageOnetimeDto(
    message: (object)[
        'subject' => 'Разовая рассылка',
        'fromEmail' => 'noreply@example.com',
        'fromName' => 'Команда Example',
        'html' => 'Привет!',
        'plainText' => 'Привет!'
    ],
    isDraft: false,
    to: (object)[
        'email' => 'user@example.com',
        'snippets' => ['name' => 'Иван']
    ]
));

// Черновик с запланированной отправкой
$result = $enkod->messageOnetime([
    'message' => [
        'subject' => 'Запланированная отправка',
        'fromEmail' => 'noreply@example.com',
        'fromName' => 'Команда Example',
        'html' => 'Добрый день!',
        'plainText' => 'Добрый день!'
    ],
    'isDraft' => true,
    'to' => [
        'email' => 'user@example.com',
        'snippets' => ['name' => 'Иван']
    ],
    'deliveryDate' => Carbon::now()->addHour(), // или '2026-01-20 12:00'
]);
```

###  Health Score

18

—

LowBetter than 8% of packages

Maintenance49

Moderate activity, may be stable

Popularity3

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/17215820?v=4)[Тимур Родя](/maintainers/timurrodya)[@timurrodya](https://github.com/timurrodya)

---

Top Contributors

[![timurrodya](https://avatars.githubusercontent.com/u/17215820?v=4)](https://github.com/timurrodya "timurrodya (25 commits)")

### Embed Badge

![Health badge](/badges/timurrodya-enkod-laravel/health.svg)

```
[![Health](https://phpackages.com/badges/timurrodya-enkod-laravel/health.svg)](https://phpackages.com/packages/timurrodya-enkod-laravel)
```

###  Alternatives

[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k39.6M299](/packages/laravel-dusk)[nineinchnick/edatatables

Grid widget for the Yii Framework, wrapper for the DataTables jQuery plugin

173.2k](/packages/nineinchnick-edatatables)[link-cloud/fast-hyperf

LinkCloud Fast Hyperf

241.2k1](/packages/link-cloud-fast-hyperf)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
