Laravel Mail

Laravel
Tempo de leitura: 4 minutos

O sistema de Mail do Laravel fornece uma API limpa e fluida para o envio de e-mails, suportando diversos serviços de entrega e formatos. Ele abstrai a complexidade do envio, permitindo que os desenvolvedores se concentrem na criação do conteúdo através de Views Blade. É a ferramenta padrão para lidar com notificações, confirmações, newsletters e outras comunicações por e-mail.

1. ⚙️ Configuração e Drivers

O Laravel Mail suporta vários backends de envio através de Drivers. A configuração principal é feita no arquivo config/mail.php e utiliza variáveis de ambiente do .env.

A. Drivers Comuns

DriverUsoConfiguração
smtpServidor SMTP tradicional (Mailtrap, GMail).MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD
mailgunServiço de entrega de e-mail dedicado.MAILGUN_DOMAIN, MAILGUN_SECRET
sesAmazon Simple Email Service.Configurações AWS (Região, Chave, etc.).
logModo de desenvolvimento: E-mails são escritos no arquivo de log.Útil para testes básicos.
arrayModo de desenvolvimento: E-mails são armazenados em um array na memória.Ideal para testes unitários.

B. Configuração Essencial

No .env, você define as credenciais e o remetente padrão:

.ENV

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io # Ou seu servidor SMTP/serviço
MAIL_PORT=2525
MAIL_USERNAME=...
MAIL_PASSWORD=...
MAIL_FROM_ADDRESS="[email protected]"
MAIL_FROM_NAME="${APP_NAME}"

2. ✍️ Escrevendo um Mailable

Um Mailable é uma classe que encapsula a construção de um e-mail: o conteúdo, o remetente, o assunto e os anexos.

A. Criação via Artisan

Bash

php artisan make:mail WelcomeEmail
# Cria o arquivo em app/Mail/WelcomeEmail.php

B. Definição do Conteúdo (build())

O método build() é onde você define a estrutura do e-mail.

PHP

// app/Mail/WelcomeEmail.php
namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class WelcomeEmail extends Mailable
{
    use Queueable, SerializesModels;

    public $user; // Propriedade pública injetada na View

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * Constrói a mensagem.
     */
    public function build()
    {
        return $this->view('emails.welcome') // Define a View Blade
                    ->subject('Seja Bem-vindo(a) à nossa plataforma!')
                    ->from('[email protected]', 'Administração');
    }
}

C. A View Blade

A View (resources/views/emails/welcome.blade.php) tem acesso às propriedades públicas do Mailable (ex: $user).

Blade

<h1>Olá, {{ $user->name }}!</h1>
<p>Obrigado por se juntar a nós. Seu cadastro foi concluído com sucesso.</p>

3. 🚀 Enviando (Dispatching) E-mails

O envio é realizado através da Facade Mail.

A. Envio Imediato (Síncrono)

PHP

use Illuminate\Support\Facades\Mail;
use App\Mail\WelcomeEmail;

// Instancia o Mailable
$email = new WelcomeEmail($user);

// Envia o e-mail imediatamente para o destinatário
Mail::to($user->email)->send($email); 

B. Envio em Fila (Assíncrono)

Para tarefas demoradas como o envio de e-mail, é crucial colocá-las em fila para evitar que a requisição do usuário seja bloqueada. O Mailable deve usar o trait Queueable.

PHP

// Enviando para a fila
Mail::to($user->email)->queue(new WelcomeEmail($user)); 
// OU usando o helper dispatch
WelcomeEmail::dispatch($user)->to($user->email);

Nota: Para que isso funcione, o sistema de Filas (Queues) deve estar configurado e o Worker em execução (php artisan queue:work).

4. 🧪 Desenvolvimento e Depuração

A. Mailtrap (Desenvolvimento Local)

Serviços como o Mailtrap atuam como um SMTP falso que captura todos os e-mails enviados em desenvolvimento. Você configura o MAIL_HOST e MAIL_PORT do Mailtrap no seu .env para inspecionar e-mails sem enviá-los de fato.

B. Pré-visualização de Mailables

Você pode visualizar a renderização final de qualquer Mailable diretamente no navegador (ou terminal) sem enviá-lo.

PHP

// No seu arquivo de rotas (routes/web.php)
use App\Mail\WelcomeEmail;
use App\Models\User; // Use um modelo de usuário real ou fake

Route::get('/mail-preview', function () {
    $user = User::first(); // Pega um usuário existente para o preview
    return new WelcomeEmail($user); // O Laravel renderiza o Mailable
});

5. ✨ Personalizações Avançadas

FuncionalidadeImplementação no build()Exemplo
Anexos$this->attach('/caminho/local/file.pdf')Anexa um arquivo do disco local.
Anexos Brutos$this->attachData($data, 'file.txt')Anexa dados brutos (ex: PDF gerado em memória).
Tags$this->tag('order-confirmation')Adiciona tags para serviços como Mailgun/SES (rastreamento e filtragem).
Prioridade$this->priority('low')Define a prioridade do e-mail.

✅ Conclusão Laravel Mail

Laravel Mail: O sistema de e-mails do Laravel simplifica a comunicação com o usuário através de classes Mailables bem definidas e Views Blade. Ao utilizar o método queue() para envio assíncrono e serviços de teste como o Mailtrap em desenvolvimento, você garante que sua aplicação seja rápida, robusta e que os e-mails sejam entregues de forma confiável.

Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:

HTML
HTML
CSS
CSS
Javascript
JavaScript
SQL
SQL
Capa Curso PHP
PHP

E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi
Com mais de 20 anos de jornada na tecnologia, minha trajetória evoluiu do ensino técnico à arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de soluções de Inteligência Artificial nativa e análise de dados públicos, utilizando o ecossistema PHP para transformar dados brutos em transparência e eficiência. Como autor e desenvolvedor, acredito na democratização do conhecimento. Essa visão resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura até os bastidores da indústria de Jogos e IA. No universo de Game Design, sou autor do livro "GDD – O Guia Definitivo" e documento ativamente meus processos através de DevLogs, unindo rigor técnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso é conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.