Перейти к документации
PHP

Установка

Один пакет Composer, PHP 8.2 и новее, с расширениями curl и json.

Установка

Текущий релиз: 0.0.1. В нём есть метод для каждого метода TypeScript SDK под тем же именем, а проверка соответствия пакета роняет сборку, когда какой-то метод пропадает или отправляет другой запрос.

composer require openemail/sdk
send_email.php
<?php use OpenEmail\OpenEmail; require __DIR__ . '/vendor/autoload.php'; $client = new OpenEmail(); $email = $client->emails->send([    'from' => 'Acme Billing <[email protected]>',    'to' => '[email protected]',    'subject' => 'Your September invoice',    'html' => '<p>Invoice attached.</p>',]); echo $email['id'], ' ', $email['status'], PHP_EOL;

new OpenEmail() читает ключ из OPENEMAIL_API_KEY, поэтому в коде нет учётных данных. Передайте apiKey:, если ваша конфигурация хранится в другом месте. Чтобы обращаться к одному клиенту откуда угодно, настройте его один раз через OpenEmail::init() и получайте через OpenEmail::getClient().

Ответ представляет собой декодированный JSON в виде ассоциативного массива, поэтому $email['id'] читает id. Ключи сохраняют имена из API, как и методы с их именованными аргументами, поэтому scheduledAt и idempotencyKey: пишутся здесь так же, как в справочнике API.

То, что send вернул результат, не значит, что сообщение ушло. Запланированная или отменяемая отправка возвращается со статусом queued или scheduled и завершается позже. Читайте status, а не сам факт возврата из вызова.

Где он работает

PHP 8.2 и новее, с расширениями curl и json, которые есть почти в любой сборке, и без других зависимостей. Запросы идут через один дескриптор cURL на клиент, поэтому второй запрос к API переиспользует соединение, открытое первым, а сжатый ответ cURL распаковывает за вас.

Он работает под PHP-FPM, Apache, из командной строки и в долгоживущих воркерах, таких как обработчик очереди, RoadRunner или FrankenPHP. Под PHP-FPM каждый запрос начинается с чистого листа, поэтому создавайте клиент один раз на запрос. В долгоживущем процессе держите один клиент на всё время жизни процесса. После pcntl_fork дочерний процесс открывает собственное соединение, а не переиспользует родительское.

Клиент несёт API-ключ рабочего пространства, который может отправлять почту и читать почтовый ящик, поэтому его место на сервере, в задании или в инструменте, который работает на вашей собственной машине. Храните ключ в переменной окружения или в секретах вашего фреймворка, но никогда в коде.