atima / php-email-lib
Cliente PHP puro para envio de e-mails via API HTTP customizada (sem dependências de framework)
dev-master
2026-03-24 15:56 UTC
Requires
- php: ^8.1
- ext-curl: *
- ext-fileinfo: *
- ext-json: *
This package is auto-updated.
Last update: 2026-04-24 16:08:22 UTC
README
Cliente PHP puro para envio de e-mails via API HTTP customizada. Sem dependências de framework — funciona em qualquer projeto PHP 8.1+.
Instalação
composer require atima/php-email-lib
Requer as extensões PHP ext-curl e ext-json.
Configuração
Via array (recomendado para uso direto)
use Atima\PhpEmailLib\AtiMailer; $mailer = new AtiMailer([ 'key' => 'sua_api_key', 'endpoint' => 'https://api.seuservico.com', 'staging' => true, 'ssl_cert' => true, // true, false, ou caminho para .pem 'timeout' => 30, ]);
Via variáveis de ambiente
Copie .env.example e preencha as variáveis, então:
$mailer = AtiMailer::fromEnv();
Variáveis suportadas:
| Variável | Padrão | Descrição |
|---|---|---|
ATI_EMAIL_KEY |
— | Chave de autenticação (obrigatória) |
ATI_EMAIL_ENDPOINT |
— | URL base da API (obrigatória) |
ATI_STAGING |
true |
Modo staging (true/false) |
ATI_SSL_CERT |
true |
SSL: true, false ou caminho para .pem |
ATI_EMAIL_TIMEOUT |
30 |
Timeout em segundos |
Uso
E-mail simples
use Atima\PhpEmailLib\AtiMessage; $mailer->send( AtiMessage::create() ->to('destinatario@exemplo.com') ->subject('Olá!') ->html('<p>Olá, mundo!</p>') );
Múltiplos destinatários e campos opcionais
$mailer->send( AtiMessage::create() ->to(['user1@exemplo.com', 'user2@exemplo.com']) ->cc('copia@exemplo.com') ->bcc('oculto@exemplo.com') ->from('remetente@exemplo.com', 'Meu Sistema') ->replyTo('respostas@exemplo.com') ->subject('Relatório diário') ->html('<h1>Relatório</h1><p>Segue em anexo.</p>') ->text('Relatório — veja o arquivo em anexo.') );
Com anexo de arquivo
$mailer->send( AtiMessage::create() ->to('cliente@exemplo.com') ->subject('Nota fiscal') ->html('<p>Segue a nota fiscal em anexo.</p>') ->attach('/var/www/storage/nf-1234.pdf') );
Com anexo gerado em memória
$csvData = "nome,email\nJoão,joao@exemplo.com"; $mailer->send( AtiMessage::create() ->to('analista@exemplo.com') ->subject('Exportação') ->html('<p>Exportação em anexo.</p>') ->attachData($csvData, 'usuarios.csv', 'text/csv') );
Tratamento de erros
use Atima\PhpEmailLib\Exception\AtiMailException; try { $mailer->send($message); } catch (AtiMailException $e) { echo $e->getMessage(); // mensagem de erro echo $e->getHttpStatus(); // código HTTP (ex: 401, 500) echo $e->getResponseBody(); // corpo da resposta da API } catch (\InvalidArgumentException $e) { echo 'Dados inválidos: ' . $e->getMessage(); }
Estrutura
src/
├── AtiMailer.php # Cliente principal (configuração + envio via cURL)
├── AtiMessage.php # Builder fluente para compor e-mails
├── AtiAttachment.php # Helper para anexos (arquivo ou dados em memória)
└── Exception/
└── AtiMailException.php # Exceção com httpStatus e responseBody