
Programação Funcional no Elixir: Fundamentos e Exemplos
A programação funcional está se tornando cada vez mais popular devido à sua simplicidade e capacidade de lidar com paralelismo... 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
A programação funcional está se tornando cada vez mais popular devido à sua simplicidade e capacidade de lidar com paralelismo... Leia mais
Go (ou Golang) é uma linguagem de programação eficiente e fácil de usar, conhecida por sua simplicidade, sendo ideal para... Leia mais
Publiquei neste artigo https://paulorb.dev/alternar-entre-multiplas-versoes-no-php/ formas de como instalar diversas versões do PHP em distros Linux mas surgiu um problema que... Leia mais
No mundo da programação PHP, compreender o conceito de variáveis de variáveis e o uso de referências é fundamental para... Leia mais