Saltar para a documentação
PHP

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
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() 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.