Enviando E-mails com Laravel

O Laravel vem com excelente suporte para email nativo, mas você ainda precisa de um serviço de entrega confiável por trás dele. O pacote Emailit Laravel se conecta diretamente ao sistema de email do Laravel como um transporte nativo. Seus Mailables, Notifications e chamadas Mail::send() existentes funcionam sem nenhuma alteração no código. Além disso, você obtém acesso completo à API do Emailit através de uma Facade conveniente.
Enviar emails é uma das tarefas mais comuns em qualquer aplicação Laravel. Confirmações de registro de usuário, redefinições de senha, recibos de pedidos, atualizações de envio e newsletters de marketing dependem de entrega confiável de email. Embora o Laravel forneça uma poderosa camada de abstração de email, a entrega real ainda depende do transporte que você configurar. Usar uma API de email como o Emailit oferece alta entregabilidade, rastreamento de entrega, gerenciamento de bounces e análises detalhadas, sem ter que gerenciar servidores SMTP ou se preocupar com reputação de IP.
Neste guia, vamos percorrer a configuração do Emailit em uma aplicação Laravel e o envio de emails usando tanto o sistema de email padrão do Laravel quanto a Facade do Emailit.
Requisitos
- PHP 8.1 ou superior
- Laravel 10, 11 ou 12
- Uma conta Emailit com uma chave de API
Instalação
Instale o pacote via Composer:
composer require emailit/emailit-laravel
O pacote descobre automaticamente seu service provider, então não é necessário registro manual. Funciona com Laravel 10, 11 e 12 nativamente.
Configuração
Adicione sua chave de API ao .env:
EMAILIT_API_KEY=sua_chave_api
Defina o Emailit como seu mailer padrão:
MAIL_MAILER=emailit
Adicione o mailer emailit ao array de mailers do seu config/mail.php:
'mailers' => [
// ...
'emailit' => [
'transport' => 'emailit',
],
],
Opcionalmente, publique o arquivo de configuração para personalizar a URL base da API:
php artisan vendor:publish --tag=emailit-config
A configuração é intencionalmente mínima. Uma vez que você definir sua chave de API e o mailer padrão, o Laravel roteará automaticamente todos os emails de saída através do Emailit. Não há necessidade de configurar hosts SMTP, portas, configurações de criptografia ou credenciais de autenticação como você faria com uma configuração tradicional de servidor de email.
Enviando emails com Laravel Mail
Uma vez configurado, todos os recursos de email do Laravel funcionam nativamente. Nada no seu código existente precisa mudar.
Usando um Mailable
Crie uma classe Mailable como você normalmente faria:
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
class EmailBoasVindas extends Mailable
{
use Queueable, SerializesModels;
public function __construct(
public readonly User $user,
) {}
public function envelope(): Envelope
{
return new Envelope(
subject: 'Bem-vindo ao Nosso App',
);
}
public function content(): Content
{
return new Content(
view: 'emails.boas-vindas',
);
}
}
Então envie:
use Illuminate\Support\Facades\Mail;
use App\Mail\EmailBoasVindas;
Mail::to('usuario@exemplo.com')->send(new EmailBoasVindas($user));
Emails em fila, Mailables Markdown e Notifications funcionam exatamente como você esperaria. O Emailit fica transparentemente por trás da camada de email do Laravel, então você pode substituí-lo por qualquer transporte existente como SMTP, Mailgun ou SES sem tocar no código da sua aplicação. Isso facilita testar o Emailit junto com seu provedor atual ou migrar gradualmente.
Usando a Facade Emailit
Para recursos que vão além do que o sistema de email do Laravel oferece, como templates com variáveis, envios agendados ou gerenciamento de recursos da API, use a Facade Emailit. Ela oferece acesso direto ao SDK PHP do Emailit completo.
Enviar um email via API
use Emailit\Laravel\Facades\Emailit;
$email = Emailit::emails()->send([
'from' => 'ola@seudominio.com',
'to' => ['usuario@exemplo.com'],
'subject' => 'Olá do Emailit',
'html' => '<h1>Bem-vindo!</h1>',
]);
echo $email->id;
echo $email->status;
Enviar com um template
Referencie templates que você criou no painel do Emailit e passe variáveis dinâmicas:
use Emailit\Laravel\Facades\Emailit;
$email = Emailit::emails()->send([
'from' => 'ola@seudominio.com',
'to' => 'usuario@exemplo.com',
'template' => 'email_boas_vindas',
'variables' => [
'nome' => 'João Silva',
'empresa' => 'Acme Ltda',
],
]);
Usar templates do lado do servidor é um padrão poderoso para aplicações Laravel. Seus designers e profissionais de marketing podem atualizar conteúdo, estilo e layout dos emails no painel do Emailit sem exigir mudanças no código ou novos deploys. O código PHP só precisa passar os dados, e o template cuida da renderização.
Agendar um email
use Emailit\Laravel\Facades\Emailit;
$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',
]);
Emails agendados são tratados inteiramente pela API do Emailit, o que significa que funcionam independentemente do seu sistema de filas do Laravel. Isso é ideal para lembretes de consultas, avisos de renovação de assinatura e campanhas sensíveis ao tempo onde você quer entrega garantida em um horário específico, mesmo se seu servidor de aplicação passar por indisponibilidade.
Enviar com anexos
use Emailit\Laravel\Facades\Emailit;
$email = Emailit::emails()->send([
'from' => 'faturas@seudominio.com',
'to' => 'cliente@exemplo.com',
'subject' => 'Sua Fatura #12345',
'html' => '<p>Segue sua fatura em anexo.</p>',
'attachments' => [
[
'filename' => 'fatura.pdf',
'content' => base64_encode(file_get_contents('fatura.pdf')),
'content_type' => 'application/pdf',
],
],
]);
Gerenciando recursos
A Facade expõe todos os serviços da API do Emailit, então você pode gerenciar toda sua infraestrutura de email a partir do Laravel.
Domínios
use Emailit\Laravel\Facades\Emailit;
$domain = Emailit::domains()->create([
'name' => 'exemplo.com',
'track_loads' => true,
'track_clicks' => true,
]);
$domain = Emailit::domains()->verify('sd_123');
Gerenciar domínios de envio através da API é útil para plataformas SaaS que precisam configurar domínios personalizados para cada cliente. Você pode automatizar todo o fluxo de verificação de domínio, incluindo verificações de registros DNS, diretamente da sua aplicação Laravel.
Contatos
use Emailit\Laravel\Facades\Emailit;
$contact = Emailit::contacts()->create([
'email' => 'usuario@exemplo.com',
'first_name' => 'João',
'last_name' => 'Silva',
]);
$contacts = Emailit::contacts()->list();
Verificação de email
use Emailit\Laravel\Facades\Emailit;
$result = Emailit::emailVerifications()->verify([
'email' => 'teste@exemplo.com',
]);
echo $result->status; // valid
echo $result->risk; // low
Verificar endereços de email no momento do registro ou envio de formulário ajuda você a manter uma lista de contatos limpa e protege sua reputação de remetente. Altas taxas de bounce de endereços inválidos podem fazer seus emails caírem em pastas de spam, então a verificação é uma boa prática para qualquer aplicação Laravel que envia emails transacionais ou de marketing em escala.
Injeção de dependência
Se você preferir não usar Facades, pode injetar o client diretamente:
use Emailit\EmailitClient;
class EmailController extends Controller
{
public function send(EmailitClient $emailit)
{
$email = $emailit->emails()->send([
'from' => 'ola@seudominio.com',
'to' => ['usuario@exemplo.com'],
'subject' => 'Olá',
'html' => '<p>Oi!</p>',
]);
return response()->json(['id' => $email->id]);
}
}
O container de serviços do Laravel resolve automaticamente a instância EmailitClient com a chave de API da sua configuração, então você obtém a mesma conveniência da Facade com os benefícios de testabilidade da injeção de dependência.
Tratamento de erros
O SDK PHP subjacente lança exceções tipadas, então você pode capturar tipos específicos de erro:
use Emailit\Exceptions\AuthenticationException;
use Emailit\Exceptions\RateLimitException;
use Emailit\Exceptions\ApiErrorException;
use Emailit\Laravel\Facades\Emailit;
try {
Emailit::emails()->send([...]);
} catch (AuthenticationException $e) {
// Chave de API inválida (401)
} catch (RateLimitException $e) {
// Muitas requisições (429)
} catch (ApiErrorException $e) {
// Qualquer outro erro da API
echo $e->getHttpStatus();
}
Em uma aplicação Laravel, você também pode tratar essas exceções globalmente no seu exception handler ou usar middleware para capturar erros de limite de taxa e implementar lógica de retry automática. Isso garante que sua aplicação permaneça resiliente mesmo ao enviar grandes volumes de email.
Todos os serviços disponíveis
A Facade oferece acesso a tudo na API do Emailit:
| Serviço | Uso | Descrição |
|---|---|---|
| Emails | Emailit::emails() | Enviar, listar, obter, cancelar, retentar emails |
| Domains | Emailit::domains() | Criar, verificar, listar, gerenciar domínios de envio |
| API Keys | Emailit::apiKeys() | Criar, listar, gerenciar chaves de API |
| Audiences | Emailit::audiences() | Criar, listar, gerenciar audiências |
| Subscribers | Emailit::subscribers() | Adicionar, listar, gerenciar assinantes |
| Templates | Emailit::templates() | Criar, listar, publicar templates de email |
| Suppressions | Emailit::suppressions() | Criar, listar, gerenciar endereços suprimidos |
| Email Verifications | Emailit::emailVerifications() | Verificar endereços de email |
| Email Verification Lists | Emailit::emailVerificationLists() | Verificação de email em lote |
| Webhooks | Emailit::webhooks() | Criar, listar, gerenciar webhooks |
| Contacts | Emailit::contacts() | Criar, listar, gerenciar contatos |
| Events | Emailit::events() | Listar e recuperar eventos |
Comece agora
Instale o pacote e comece a enviar em menos de um minuto:
composer require emailit/emailit-laravel
Confira a documentação completa do pacote no GitHub, o SDK PHP do Emailit para o client subjacente, 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.


