anúncios

terça-feira, 25 de julho de 2023

Configurando o MailHog no Laravel

MailHog é uma ferramenta de desenvolvimento que permite capturar e visualizar e-mails enviados por uma aplicação. Neste tutorial, explicarei como utilizar o MailHog em conjunto com uma aplicação Laravel para testar o envio de e-mails durante o desenvolvimento.

Com o Docker instalado, execute:

docker container run -d --name mailhog -p 8025:8025 -p 1025:1025 mailhog/mailhog

O MailHog será iniciado e começará a escutar na porta 1025 para SMTP e a porta 8025 para HTTP

Configurando o MailHog no projeto Laravel

Adicionar o MailHog no projeto Laravel

Abre o terminal e acesse o diretório raiz do projeto

composer require --dev mailhog/mailhog

Edite o arquivo .env e configure as variáveis

MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=seu-email@app.exemplo.com
MAIL_FROM_NAME="${APP_NAME}"

Essas configurações informam ao Laravel para usar o MailHog como servidor SMTP e enviar e-mails para o endereço especificado em MAIL_FROM_ADDRESS.

Testando o envio de e-mails

Estando com o MailHog em execução no ambiente Docker e configurado corretamente na sua aplicação Laravel, segue o exemplo básico de implementação para testar o envio de e-mails com o MailHog

php artisan make:mail WelcomeEmail

Abra o arquivo WelcomeEmail.php localizado em app/Mail e implemente o conteúdo do e-mail. O método build é onde você pode definir a estrutura do e-mail, o assunto e outras informações relevantes.

<?php

namespace App\Mail;

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

class WelcomeEmail extends Mailable
{
use Queueable, SerializesModels;

public $user;

/**
* Create a new message instance.
*
* @param User $user
* @return void
*/
public function __construct($user)
{
$this->user = $user;
}

/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('emails.welcome')
->subject('Bem-vindo ao sistema')
->with([
'userName' => $this->user->name,
]);
}
}

Agora, você precisa criar a view para o e-mail de boas-vindas. O Laravel segue uma convenção para a localização das views de e-mails. Crie um novo arquivo chamado welcome.blade.php no diretório resources/views/emails. A estrutura da view pode ser semelhante a esta:

<!DOCTYPE html>
<html>
<head>
<title>Bem-vindo(a) ao Nosso Site</title>
</head>
<body>
<h2>Olá, {{ $userName }}!</h2>
<p>Bem-vindo(a) ao nosso site! Esperamos que você aproveite sua experiência conosco.</p>
</body>
</html>

Com a classe WelcomeEmail e a view criadas, você pode testar o envio do e-mail de boas-vindas em seu controlador de registro de usuários

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

// ...

public function register(Request $request)
{
// Lógica de registro do usuário...

// Enviar e-mail de boas-vindas
Mail::to($user->email)->send(new WelcomeEmail($user));
}

Agora no presente exemplo a cada novo usuário registrado, o e-mail de boas-vindas será encaminhado ao endereço de e-mail do usuário, os e-mails estão sendo capturados pelo MailHog, você pode visualizá-los em um navegador. Abra seu navegador da web e acesse http://localhost:8025. Você verá a interface do MailHog, onde poderá visualizar todos os e-mails encaminhados pela sua aplicação.

Lembre-se de que o MailHog é uma ferramenta de desenvolvimento, portanto, os e-mails capturados não serão enviados para os destinatários reais. Eles ficam disponíveis apenas para visualização na interface do MailHog.

Com isso, você configurou e utilizou o MailHog para capturar e visualizar e-mails enviados por sua aplicação Laravel durante o desenvolvimento. Isso pode ser especialmente útil para depuração e testes de envio de e-mails sem a necessidade de enviar mensagens reais para os destinatários durante a fase de desenvolvimento.

Feito!

Nenhum comentário:

Postar um comentário