Localizado por IA
Tutoriais • MARCH 3, 2026

Enviando E-mails com PHP

Aprenda a enviar emails em PHP usando o SDK PHP da Emailit. Desde mensagens simples até templates, anexos e envio programado, tudo com uma API limpa e moderna.
Enviando E-mails Usando PHP
Enviando E-mails Usando PHP

O envio de emails em PHP tradicionalmente significava lutar com mail(), configurar servidores SMTP ou incluir dependências pesadas. O SDK PHP do Emailit oferece uma alternativa limpa e moderna. Você pode enviar emails transacionais, gerenciar domínios, verificar endereços e lidar com webhooks, tudo através de um cliente de API simples.

O PHP continua sendo uma das linguagens mais utilizadas para desenvolvimento web, e o envio de emails é um requisito essencial para praticamente todas as aplicações PHP. Seja construindo um produto SaaS, uma loja virtual ou um sistema de gerenciamento de conteúdo, a entrega confiável de emails é fundamental para onboarding de usuários, redefinição de senhas, confirmações de pedidos e campanhas de marketing. Em vez de depender da função nativa mail() do PHP, que oferece controle limitado e nenhuma garantia de entrega, usar uma API dedicada de email garante que suas mensagens realmente cheguem à caixa de entrada.

Neste guia, vamos percorrer a instalação do SDK e seu uso para enviar emails de qualquer aplicação PHP.

Requisitos

  • PHP 8.1 ou superior
  • Uma conta Emailit com uma chave de API
  • Composer

Instalação

Instale o SDK via Composer:

composer require emailit/emailit-php

O SDK PHP do Emailit está disponível como um pacote Composer, então se integra perfeitamente a qualquer projeto PHP que use Composer para gerenciamento de dependências. Não há necessidade de includes manuais de arquivos ou autoloaders personalizados.

Inicializar o cliente

Crie uma instância do cliente com sua chave de API:

require 'vendor/autoload.php';

$emailit = Emailit::client('sua_chave_api');

Você pode encontrar sua chave de API no painel do Emailit em Chaves de API.

Enviar um email básico

Enviar um email requer apenas uma chamada de método:

$email = $emailit->emails()->send([
    'from'    => 'ola@seudominio.com',
    'to'      => ['usuario@exemplo.com'],
    'subject' => 'Olá do Emailit',
    'html'    => '<h1>Bem-vindo!</h1><p>Obrigado por se cadastrar.</p>',
]);

echo $email->id;     // em_abc123...
echo $email->status; // pending

Todos os métodos de serviço retornam objetos de recurso tipados com acesso direto às propriedades, então você sempre sabe exatamente com o que está trabalhando.

Comparado ao uso da função nativa mail() do PHP, enviar emails através de uma API oferece rastreamento de entrega, tratamento de bounces e informações detalhadas de status para cada mensagem. Você não precisa se preocupar em configurar Sendmail ou Postfix no seu servidor, e obtém entrega confiável em todos os principais provedores de email como Gmail, Outlook e Yahoo.

Enviar com template

Se você criou um template no painel do Emailit, pode referenciá-lo pelo slug e passar variáveis:

$email = $emailit->emails()->send([
    'from'      => 'ola@seudominio.com',
    'to'        => 'usuario@exemplo.com',
    'template'  => 'email_boas_vindas',
    'variables' => [
        'nome'    => 'João Silva',
        'empresa' => 'Acme Ltda',
    ],
]);

Templates mantêm o conteúdo dos seus emails fora do código e permitem que não-desenvolvedores atualizem textos sem precisar fazer deploy. Isso é especialmente útil para emails transacionais como mensagens de boas-vindas, links de redefinição de senha, recibos de faturas e notificações de envio, onde o design e a redação mudam mais frequentemente que o código que os dispara.

Enviar com anexos

Anexe arquivos passando conteúdo codificado em base64:

$email = $emailit->emails()->send([
    'from'        => 'faturas@seudominio.com',
    'to'          => 'cliente@exemplo.com',
    'subject'     => 'Sua Fatura #12345',
    'html'        => '<p>Segue em anexo sua fatura.</p>',
    'attachments' => [
        [
            'filename'     => 'fatura.pdf',
            'content'      => base64_encode(file_get_contents('fatura.pdf')),
            'content_type' => 'application/pdf',
        ],
    ],
]);

Você pode anexar PDFs, imagens, planilhas ou qualquer outro tipo de arquivo. Isso é comumente usado para enviar faturas, relatórios ou documentos gerados diretamente da sua aplicação PHP sem precisar de um link de download separado.

Agendar um email para mais tarde

Passe um timestamp scheduled_at para enviar em uma data futura:

$email = $emailit->emails()->send([
    'from'         => 'lembretes@seudominio.com',
    'to'           => 'usuario@exemplo.com',
    'subject'      => 'Lembrete de Consulta',
    'html'         => '<p>Sua consulta é amanhã às 14h.</p>',
    'scheduled_at' => '2026-04-10T09:00:00Z',
]);

echo $email->status;       // scheduled
echo $email->scheduled_at; // 2026-04-10T09:00:00Z

Emails agendados podem ser cancelados antes de serem enviados:

$emailit->emails()->cancel('em_abc123');

O agendamento é útil para comunicações sensíveis ao tempo como lembretes de consultas, avisos de renovação de assinatura e campanhas de nutrição onde o horário de envio importa tanto quanto o conteúdo.

Listar e gerenciar emails enviados

Recupere uma lista paginada dos seus emails:

$emails = $emailit->emails()->list(['page' => 1, 'limit' => 10]);

foreach ($emails as $email) {
    echo $email->id . ' - ' . $email->status . "\n";
}

Tente novamente um email que falhou:

$emailit->emails()->retry('em_abc123');

Ter visibilidade completa dos seus emails enviados, seu status de entrega e a capacidade de tentar novamente falhas oferece um nível de controle que a função mail() do PHP simplesmente não consegue fornecer. Isso é crítico para aplicações onde cada email importa, como recibos transacionais, links de verificação de conta e códigos de autenticação de dois fatores.

Verificar endereços de email antes de enviar

Reduza bounces verificando endereços antecipadamente:

$result = $emailit->emailVerifications()->verify([
    'email' => 'teste@exemplo.com',
]);

echo $result->status; // valid
echo $result->score;  // 0.95
echo $result->risk;   // low

A verificação de email é uma boa prática para proteger sua reputação de remetente. Enviar para endereços inválidos ou descartáveis aumenta sua taxa de bounce, o que pode acionar filtros de spam e prejudicar a entregabilidade em todo o seu domínio. Ao verificar endereços antes de enviar, você mantém suas taxas de bounce baixas e sua reputação intacta.

Lidar com eventos de webhook

O SDK inclui classes de evento tipadas e verificação de assinatura para webhooks. Isso permite reagir a eventos de entrega em tempo real:

use Emailit\WebhookSignature;
use Emailit\Events\EmailDelivered;
use Emailit\Events\EmailBounced;

$event = WebhookSignature::verify(
    file_get_contents('php://input'),
    $_SERVER['HTTP_X_EMAILIT_SIGNATURE'],
    $_SERVER['HTTP_X_EMAILIT_TIMESTAMP'],
    'seu_segredo_assinatura_webhook'
);

match (true) {
    $event instanceof EmailDelivered => handleDelivered($event),
    $event instanceof EmailBounced   => handleBounce($event),
    default                          => log("Não tratado: {$event->type}"),
};

Webhooks permitem que sua aplicação PHP responda instantaneamente quando um email é entregue, retornado, aberto ou clicado. Isso é essencial para construir fluxos orientados a eventos como atualizar um CRM quando uma mensagem é entregue, alertar sua equipe de suporte sobre bounces ou rastrear métricas de engajamento para suas campanhas de email.

Tratamento de erros

O SDK lança exceções tipadas para que você possa tratar cada caso de erro com precisão:

use Emailit\Exceptions\AuthenticationException;
use Emailit\Exceptions\RateLimitException;
use Emailit\Exceptions\UnprocessableEntityException;
use Emailit\Exceptions\ApiErrorException;

try {
    $emailit->emails()->send([...]);
} catch (AuthenticationException $e) {
    // Chave de API inválida (401)
} catch (RateLimitException $e) {
    // Muitas requisições (429)
} catch (UnprocessableEntityException $e) {
    // Validação falhou (422)
} catch (ApiErrorException $e) {
    // Qualquer outro erro de API
    echo $e->getHttpStatus();
}

O tratamento adequado de erros garante que sua aplicação degrade graciosamente quando algo dá errado. Exceções de limite de taxa, por exemplo, podem ser tratadas com uma estratégia de retry, enquanto erros de autenticação devem disparar um alerta para que você possa rotacionar sua chave de API.

Além de emails

O SDK oferece acesso à API completa do Emailit, não apenas envio. Você pode gerenciar domínios, chaves de API, audiências, assinantes, templates, supressões, contatos e eventos, tudo do PHP:

$domain = $emailit->domains()->create(['name' => 'exemplo.com']);
$contact = $emailit->contacts()->create(['email' => 'usuario@exemplo.com']);
$templates = $emailit->templates()->list();

Isso torna o SDK PHP do Emailit um kit completo de infraestrutura de email. Em vez de usar bibliotecas ou serviços separados para gerenciamento de domínios, listas de contatos e envio de emails, você pode lidar com tudo através de um único cliente PHP consistente.

Comece agora

Instale o SDK e envie seu primeiro email em menos de um minuto:

composer require emailit/emailit-php

Confira a documentação completa do SDK no GitHub, ou vá para a Referência da API para detalhes sobre todos os endpoints.

Blog

As últimas novidades e atualizações, direto da Emailit.

Mantenha-se atualizado com os artigos mais recentes do Blog Emailit.

Posts Relacionados

Últimas novidades, tutoriais e atualizações da equipe Emailit

Alterações nos Limites de Taxa
Anúncios
8 min de leitura

Alterações nos Limites de Taxa

Com a introdução da API v2, fizemos algumas alterações nos limites de taxa.

Oct 10, 2025
Nova Documentação
Anúncios
10 min de leitura

Nova Documentação

Um local único para encontrar todas as informações necessárias para começar a usar o Emailit.

Oct 12, 2025
API de Verificação de Email Já Disponível
Anúncios
2 min de leitura

API de Verificação de Email Já Disponível

Verifique endereços de email antes do envio com nossa nova API de Verificação de Email. Reduza devoluções e proteja sua reputação como remetente.

Feb 3, 2026