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