Laravel: Trabalhando com whereHas e with de forma simples
Quando trabalhamos com Eloquent no Laravel, frequentemente precisamos realizar consultas baseadas em relacionamentos entre modelos. Para isso, o Laravel oferece... Leia mais
Desenvolvedor de Software
No desenvolvimento de aplicações web, especialmente no Laravel, enviar emails é uma tarefa comum. Porém, testar o envio de emails em ambientes de desenvolvimento pode ser desafiador, já que você não quer correr o risco de enviar emails de teste para destinatários reais. É aí que o MailHog entra em cena. O MailHog é uma ferramenta simples e eficaz para capturar e visualizar emails enviados durante o desenvolvimento, garantindo que eles nunca sejam entregues a usuários reais. Neste artigo, vamos mostrar como instalar o MailHog e configurá-lo para uso com o Laravel.
O MailHog é um servidor de email local que captura e exibe emails enviados durante o desenvolvimento em uma interface web simples. Ele se conecta ao seu sistema como um servidor SMTP e armazena todos os emails que sua aplicação tenta enviar, evitando que eles cheguem a destinatários reais. Isso o torna uma ferramenta ideal para desenvolvimento e testes de email.
Se você está utilizando um sistema Linux ou o Windows Subsystem for Linux (WSL), instalar o MailHog é bem simples. A instalação pode ser feita diretamente utilizando o Go, já que o MailHog é uma aplicação Go(se você não tem o Go instalado veja este artigo: https://paulorb.dev/como-instalar-o-go-language-no-ubuntu/).
go install github.com/mailhog/MailHog@latest
MailHog
4.O MailHog estará disponível no endereço http://localhost:8025
, onde você poderá visualizar os emails capturados.
Agora que o MailHog está instalado e rodando, vamos configurar o Laravel para utilizar o MailHog como o servidor SMTP de desenvolvimento.
.env
na raiz do seu projeto Laravel.
MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=example@example.com
MAIL_FROM_NAME="${APP_NAME}"
localhost
como servidor SMTP, na porta 1025
, que é a porta padrão do MailHog para capturar emails.Para garantir que tudo está funcionando, vamos criar uma rota de teste no Laravel para enviar um email.
routes/web.php
, adicione o seguinte código:
use Illuminate\Support\Facades\Mail;
Route::get('/send-test-email', function () {
Mail::raw('Este é um email de teste!', function ($message) {
$message->to('teste@example.com')
->subject('Email de Teste');
});
return 'Email enviado!';
});
http://localhost:8000/send-test-email
no seu navegador. Isso irá disparar o envio de um email de teste.http://localhost:8025
para verificar se o email foi capturado. O email de teste deve aparecer na interface do MailHog.Este erro pode ocorrer se o Laravel não conseguir se conectar ao servidor MailHog. Para corrigir isso, verifique se você configurou o MAIL_HOST
corretamente como localhost
no arquivo .env
. Além disso, certifique-se de que o MailHog está rodando na porta correta (1025
).
MAIL_FROM_ADDRESS=example@example.com
MAIL_FROM_NAME="Seu Nome ou Nome do Aplicativo"
Este erro indica que o endereço de remetente (MAIL_FROM_ADDRESS
) não foi configurado. Certifique-se de que você adicionou a variável MAIL_FROM_ADDRESS
ao seu arquivo .env
:
Mail::raw('Este é um email de teste!', function ($message) {
$message->to('destinatario@example.com')
->from('remetente@example.com', 'Nome do Remetente')
->subject('Email de Teste');
});
Se você estiver usando Docker, o erro de conexão pode ocorrer porque o nome do host está incorreto. No Docker, o MAIL_HOST
deve ser o nome do serviço MailHog definido no arquivo docker-compose.yml
.
No arquivo .env
, ajuste o MAIL_HOST
para o nome do serviço mailhog
(caso esteja utilizando Docker):
MAIL_HOST=mailhog
MAIL_PORT=1025
No arquivo docker-compose.yml
:
services:
app:
build:
context: .
environment:
- MAIL_HOST=mailhog
mailhog:
image: mailhog/mailhog
ports:
- "8025:8025"
- "1025:1025"
O MailHog é uma ferramenta essencial para o desenvolvimento de aplicações que enviam emails. Com ele, você pode capturar, visualizar e testar emails enviados durante o desenvolvimento sem o risco de enviá-los para destinatários reais. Integrá-lo ao Laravel é simples e eficaz, garantindo que seus testes de email sejam seguros e eficientes.
Se você está trabalhando em um ambiente de desenvolvimento onde o envio de emails precisa ser testado constantemente, o MailHog é uma excelente escolha. Com ele, você pode visualizar todos os emails enviados localmente de forma organizada, garantindo que suas funcionalidades de email estejam funcionando corretamente antes de colocar seu código em produção.
Agora que você já sabe como instalar e configurar o MailHog com Laravel, não deixe de utilizá-lo nos seus projetos para evitar surpresas indesejadas quando for realizar o envio de emails em produção.
Passo Extra:
Se o comando MailHog não funcionar de primeiro e você não quiser ou não puder usar o Go para instalar o MailHog, pode baixar o binário diretamente.
wget https://github.com/mailhog/MailHog/releases/download/v1.0.0/MailHog_linux_amd64
2. Dê permissão de execução ao binário:
chmod +x MailHog_linux_amd64
3. Mova o binário para um diretório acessível pelo PATH (por exemplo, /usr/local/bin
):
sudo mv MailHog_linux_amd64 /usr/local/bin/MailHog
4.Agora você deve ser capaz de rodar o MailHog
diretamente com o comando:
MailHog
Quando trabalhamos com Eloquent no Laravel, frequentemente precisamos realizar consultas baseadas em relacionamentos entre modelos. Para isso, o Laravel oferece... Leia mais
Este tutorial rápido e objetivo vai te mostrar como instalar e configurar o OpenSSH no Ubuntu, além de incluir algumas... Leia mais
O Git é uma ferramenta poderosa para controle de versão, amplamente utilizada por desenvolvedores. Ao trabalhar com repositórios Git, é... Leia mais
A função WITH RECURSIVE no PostgreSQL é uma ferramenta poderosa para a execução de consultas recursivas em bancos de dados.... Leia mais