PauloRB.dev

Desenvolvedor de Software

Como Instalar e Usar o MailHog com Laravel para Testes de Email | PauloRB.dev Como Instalar e Usar o MailHog com Laravel para Testes de Email – PauloRB.dev
Como Instalar e Usar o MailHog com Laravel para Testes de Email

Como Instalar e Usar o MailHog com Laravel para Testes de Email

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 que é o MailHog?

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.

Como Instalar o MailHog

Instalando no Linux (ou WSL no Windows)

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/).

  1. Certifique-se de que você tem o Go instalado no seu ambiente de desenvolvimento.
  2. Execute o seguinte comando para instalar a versão mais recente do MailHog:
    
    
    go install github.com/mailhog/MailHog@latest
    

  3. Após a instalação, inicie o MailHog:

4.O MailHog estará disponível no endereço http://localhost:8025, onde você poderá visualizar os emails capturados.

Configurando o Laravel para Usar o MailHog

Agora que o MailHog está instalado e rodando, vamos configurar o Laravel para utilizar o MailHog como o servidor SMTP de desenvolvimento.

  1. Abra o arquivo .env na raiz do seu projeto Laravel.
  2. Substitua as configurações de email para as seguintes:
    
    
    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}"
    

  3. Essas configurações indicam que o Laravel deve usar o localhost como servidor SMTP, na porta 1025, que é a porta padrão do MailHog para capturar emails.

    Testando o Envio de Emails

    Para garantir que tudo está funcionando, vamos criar uma rota de teste no Laravel para enviar um email.

    1. No arquivo 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!';
});

  • Agora, acesse a rota http://localhost:8000/send-test-email no seu navegador. Isso irá disparar o envio de um email de teste.
  • Acesse o MailHog em http://localhost:8025 para verificar se o email foi capturado. O email de teste deve aparecer na interface do MailHog.

Resolvendo Problemas Comuns

1. Erro: “Connection could not be established with host 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"

2. Erro: “Cannot send message without a sender address”

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');
});

3. Erros ao Usar Docker

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.

  1. Baixe o MailHog:

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:

Mais Posts

Programação Funcional no Elixir: Fundamentos e Exemplos

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

Estruturas de Dados em Go: Guia Simples com Exemplos Práticos

Estruturas de Dados em Go: Guia Simples com Exemplos Práticos

Go (ou Golang) é uma linguagem de programação eficiente e fácil de usar, conhecida por sua simplicidade, sendo ideal para... Leia mais

Script para automatizar as instalações de extensões do php em distribuições LINUX

Script para automatizar as instalações de extensões do php em distribuições LINUX

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

Variáveis Dinâmicas e Referências no PHP

Variáveis Dinâmicas e Referências no PHP

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