Instalar
Um pacote Composer, para PHP 8.2 ou superior, com as extensões curl e json.
Instalar
A versão atual é a 0.0.1. Tem um método para cada método do SDK de TypeScript, com o mesmo nome, e a verificação de paridade do pacote falha o build quando algum fica de fora ou envia um pedido diferente.
composer require openemail/sdk<?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() lê a chave de OPENEMAIL_API_KEY, por isso o código não guarda nenhuma credencial. Passe apiKey: quando a sua configuração estiver noutro sítio. Para chegar a um mesmo cliente a partir de qualquer lado, configure-o uma vez com OpenEmail::init() e obtenha-o com OpenEmail::getClient().
Uma resposta é o JSON descodificado como um array associativo, por isso $email['id'] lê o id. As chaves mantêm os nomes da API, tal como os métodos e os seus argumentos nomeados, e é por isso que scheduledAt e idempotencyKey: se escrevem aqui da mesma forma que na referência da API.
O facto de send ter terminado não significa que a mensagem tenha partido. Um envio agendado ou cancelável volta como queued ou scheduled e resolve-se mais tarde. Leia status, e não o facto de a chamada ter terminado.
Onde corre
PHP 8.2 ou superior, com as extensões curl e json que quase todas as compilações incluem, e nenhuma outra dependência. Os pedidos passam por um único handle cURL por cliente, por isso um segundo pedido à API reutiliza a ligação que o primeiro abriu, e o cURL descodifica por si uma resposta comprimida.
Funciona com PHP-FPM, Apache, na linha de comandos e em workers de longa duração, como um worker de filas, o RoadRunner ou o FrankenPHP. Com PHP-FPM, cada pedido começa do zero, por isso construa o cliente uma vez por pedido. Num processo de longa duração, mantenha um durante toda a vida do processo. Depois de pcntl_fork, o processo filho abre uma ligação própria em vez de reutilizar a do pai.
O cliente transporta uma chave de API do espaço de trabalho que pode enviar correio e ler a caixa de correio, por isso o seu lugar é num servidor, numa tarefa ou numa ferramenta que corra na sua própria máquina. Guarde a chave numa variável de ambiente ou nos segredos do seu framework, nunca no código.