atima/php-email-lib

Cliente PHP puro para envio de e-mails via API HTTP customizada (sem dependências de framework)

Maintainers

Package info

github.com/Barbosalb96/ati-mailer-puro

pkg:composer/atima/php-email-lib

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

dev-master 2026-03-24 15:56 UTC

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