Tutoriais5 min de leitura
Como enviar e-mails com Laravel
Aprenda a enviar e-mails no Laravel com o pacote Emailit Laravel. Ele se integra como um transporte de e-mail nativo e dá acesso completo à API do Emailit por meio de uma Facade.
GPorGeorge

O Laravel já vem com um excelente suporte nativo a e-mail, 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 e-mail 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ê tem acesso completo à API do Emailit por meio de uma Facade prática.
Enviar e-mails é uma das tarefas mais comuns em qualquer aplicação Laravel. Confirmações de cadastro, redefinições de senha, recibos de pedidos, atualizações de entrega e newsletters de marketing dependem de uma entrega de e-mail confiável. Embora o Laravel forneça uma poderosa camada de abstração de e-mail, a entrega real ainda depende do transporte que você configurar. Usar uma API de e-mail 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 configurar o Emailit em uma aplicação Laravel e enviar e-mails tanto pelo sistema de e-mail padrão do Laravel quanto pela Facade do Emailit.
Requisitos
- PHP 8.1 ou superior
- Laravel 10, 11 ou 12
- Uma conta no Emailit com uma chave de API
Instalação
Instale o pacote via Composer:
composer require emailit/emailit-laravelO pacote registra o próprio service provider automaticamente (auto-discovery), então não é preciso registrá-lo à mão. Ele funciona com Laravel 10, 11 e 12 sem nenhuma configuração extra.
Configuração
Adicione sua chave de API ao .env:
EMAILIT_API_KEY=sua_chave_apiDefina o Emailit como seu mailer padrão:
MAIL_MAILER=emailitAdicione 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-configA configuração é mínima de propósito. Depois que você define a chave de API e o mailer padrão, o Laravel passa a enviar automaticamente todos os e-mails de saída pelo 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 e-mail.
Como enviar e-mails com o Laravel Mail
Depois da configuração, todos os recursos de e-mail do Laravel funcionam normalmente. Nada no seu código atual precisa mudar.
Com 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',
);
}
}Depois, envie:
use Illuminate\Support\Facades\Mail;
use App\Mail\EmailBoasVindas;
Mail::to('usuario@exemplo.com')->send(new EmailBoasVindas($user));E-mails em fila, Mailables Markdown e Notifications funcionam exatamente como você esperaria. O Emailit fica, de forma transparente, por trás da camada de e-mail do Laravel, então você pode colocá-lo no lugar de qualquer transporte que já usa, como SMTP, Mailgun ou SES, sem mexer no código da aplicação. Assim fica fácil testar o Emailit ao lado do seu provedor atual ou migrar aos poucos.
Com a Facade do Emailit
Para recursos que vão além do que o sistema de e-mail 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 e-mail 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
Use os 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. Designers e profissionais de marketing podem atualizar o conteúdo, o estilo e o layout dos e-mails no painel do Emailit sem mudanças no código nem novos deploys. O código PHP só precisa passar os dados, e o template cuida da renderização.
Agendar um e-mail
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',
]);E-mails 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 com hora marcada, em que você quer a entrega garantida em um horário específico, mesmo que o seu servidor de aplicação fique fora do ar.
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',
],
],
]);Gestão de recursos
A Facade expõe todos os serviços da API do Emailit, então você pode gerenciar toda a sua infraestrutura de e-mail 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 pela 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 e-mail
use Emailit\Laravel\Facades\Emailit;
$result = Emailit::emailVerifications()->verify([
'email' => 'teste@exemplo.com',
]);
echo $result->status; // valid
echo $result->risk; // lowVerificar os endereços de e-mail no cadastro ou no envio de um formulário ajuda você a manter a lista de contatos limpa e protege a sua reputação de remetente. Altas taxas de bounce de endereços inválidos podem fazer seus e-mails caírem em pastas de spam, então a verificação é uma boa prática para qualquer aplicação Laravel que envia e-mails transacionais ou de marketing em escala.
Injeção de dependência
Se preferir não usar Facades, você pode injetar o cliente 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ê tem a mesma praticidade 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 um middleware para capturar erros de limite de taxa e implementar novas tentativas automáticas. Isso garante que sua aplicação permaneça resiliente mesmo ao enviar grandes volumes de e-mail.
Todos os serviços disponíveis
A Facade oferece acesso a tudo na API do Emailit:
Serviço | Uso | Descrição |
|---|---|---|
Emails |
| Enviar, listar, obter, cancelar e tentar de novo e-mails |
Domains |
| Criar, verificar, listar e gerenciar domínios de envio |
API Keys |
| Criar, listar e gerenciar chaves de API |
Audiences |
| Criar, listar e gerenciar listas de contatos |
Subscribers |
| Adicionar, listar e gerenciar inscritos |
Templates |
| Criar, listar e publicar templates de e-mail |
Suppressions |
| Criar, listar e gerenciar endereços suprimidos |
Email Verifications |
| Verificar endereços de e-mail |
Email Verification Lists |
| Verificação de e-mails em massa |
Webhooks |
| Criar, listar e gerenciar webhooks |
Contacts |
| Criar, listar e gerenciar contatos |
Events |
| Listar e obter eventos |
Comece agora
Instale o pacote e comece a enviar em menos de um minuto:
composer require emailit/emailit-laravelConfira a documentação completa do pacote no GitHub, o SDK PHP do Emailit, que é o cliente por trás do pacote, ou consulte a referência da API para ver os detalhes de cada endpoint.


