Instalación
Un paquete de Composer, para PHP 8.2 o superior, con las extensiones curl y json.
Instalación
La versión actual es 0.0.1. Tiene un método por cada método del SDK de TypeScript, con el mismo nombre, y la comprobación de paridad del paquete hace fallar la compilación cuando falta alguno o envía una solicitud distinta.
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() lee la clave de OPENEMAIL_API_KEY, así que el código no contiene ninguna credencial. Pasa apiKey: cuando tu configuración esté en otro sitio. Para llegar a un mismo cliente desde cualquier parte, configúralo una vez con OpenEmail::init() y obtenlo con OpenEmail::getClient().
Una respuesta es el JSON decodificado como un array asociativo, así que $email['id'] lee el id. Las claves conservan los nombres de la API, igual que los métodos y sus argumentos nombrados, y por eso scheduledAt e idempotencyKey: se escriben aquí igual que en la referencia de la API.
Que send devuelva un resultado no significa que el mensaje haya salido. Un envío programado o cancelable vuelve como queued o scheduled y se resuelve más tarde. Lee status, no el hecho de que la llamada haya devuelto algo.
Dónde funciona
PHP 8.2 o superior, con las extensiones curl y json que incluye casi cualquier compilación, y ninguna otra dependencia. Las solicitudes pasan por un handle de cURL por cliente, así que una segunda solicitud a la API reutiliza la conexión que abrió la primera, y cURL descomprime por ti una respuesta comprimida.
Funciona con PHP-FPM, Apache, la línea de comandos y procesos de larga duración como un worker de colas, RoadRunner o FrankenPHP. Con PHP-FPM cada solicitud empieza de cero, así que construye el cliente una vez por solicitud. En un proceso de larga duración, conserva uno durante toda la vida del proceso. Tras pcntl_fork, el proceso hijo abre su propia conexión en lugar de reutilizar la del padre.
El cliente lleva una clave de API del espacio de trabajo que puede enviar correo y leer el buzón, así que su sitio es un servidor, un trabajo en segundo plano o una herramienta que se ejecute en tu propia máquina. Guarda la clave en una variable de entorno o en los secretos de tu framework, nunca en el código.