When you're developing your application locally you might want to send emails to users of your system.
In development you don't want to be sending real emails as you might accidentally be sending development emails to real customers. You need a way of testing locally and make sure that no emails will be sent out to customers but still allow you to view all emails being sent out.
This is why mailhog was created, it's a great development tool for testing emails and you can find the repository on Github.
You can run this locally on your machine by using the following commands
brew update && brew install mailhog
This will setup SMTP on port 1025 and allow you to see these emails on port 8025.
But not every projects needs to have mailhog so you might not want this running all the time you can use docker to install mailhog instead to use it on the projects that actually need it.
To install mailhog via docker you can use the following command
docker run -d -p 1025:1025 -p 8025:8025 mailhog/mailhog
Now navigate to
http://127.0.0.1:8025/ and you will see the mailhog interface.
To test this you can use telnet to submit a email.
telnet localhost 1025 EHLO test.com MAIL FROM:<email@example.com> RCPT TO:<firstname.lastname@example.org> DATA Subject: Hello World Hello World! . QUIT
You should now be able to see a test email in your mailhog interface.
If you would prefer to add this to docker compose you can do so by using the following script.
services: mailhog: image: mailhog/mailhog ports: - 1025:1025 - 8025:8025
Now when you run
docker-compose up -d you will be able to see and use mailhog within this docker network.
This allows you to use Mailhog in any of your local development environments.