Quantcast
Channel: Christian Münch – dev98
Viewing all articles
Browse latest Browse all 10

Run Mailhog in Docker and use it in PHP

$
0
0

This post describes how you can install and configure Mailhog as SMTP Server for your local PHP development environment. This is useful to catch all outgoing emails.

A running PHP and Docker environment is required to follow the instructions.

Install Mailhog

On my local machine, I have docker-compose.yml file which contains a lot of services (e.g MySQL, Elastic, Redis) which I use during the daily development.

For our mailhog example we need only one service. Please create a docker-compose.yml with this content:

version: '2'
services:
    mailhog:
        container_name: mailhog
        image: mailhog/mailhog
        restart: always
        ports:
            - 1025:1025
            - 8025:8025

Run docker-compose up -d mailhog to create and start the container. If the mailhog image does not exist, Docker will start to download the image from official Docker-Hub.

Verify if everything is up and running.

docker-compose ps
Name      Command             State    Ports
-------------------------------------------------------------------------------------
mailhog   MailHog             Up       0.0.0.0:1025->1025/tcp, 0.0.0.0:8025->8025/tcp

No you can use the TCP Port 1025 for sending email over SMTP protocol. The Port 8025 contains the Web-UI.

Configure PHP

Out goal is that PHP’s intern command “mail” uses our freshly installed Mailhog server. To effect this, we need to set the “sendmail_path” setting.

Please modify your php.ini file and set the following directive:

sendmail_path = docker exec -i mailhog sendmail -S localhost:1025

From now, every “mail” command call uses the docker container with the name “mailhog” to send any email.

We can test this with a simple PHP CLI call:

php -r 'mail("foo@example.com", "test", time(), "From: Mailhog <mailhog@example.com>");'

We should now be able to see the arrived message in the Web-UI. Open your browser with the address “http://localhost:8025”.


Viewing all articles
Browse latest Browse all 10

Trending Articles