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
| Driver | Uso | Configuração |
smtp | Servidor SMTP tradicional (Mailtrap, GMail). | MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD |
mailgun | Serviço de entrega de e-mail dedicado. | MAILGUN_DOMAIN, MAILGUN_SECRET |
ses | Amazon Simple Email Service. | Configurações AWS (Região, Chave, etc.). |
log | Modo de desenvolvimento: E-mails são escritos no arquivo de log. | Útil para testes básicos. |
array | Modo 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
| Funcionalidade | Implementaçã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:
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:















