rpkamp / mailhog-client
Mailhog API Client for PHP
Installs: 628 346
Dependents: 5
Suggesters: 0
Security: 0
Stars: 25
Watchers: 3
Forks: 12
Open Issues: 3
Requires
- php: ^8.1
- ext-iconv: *
- ext-json: *
- php-http/client-implementation: ^1.0
- php-http/httplug: ^1.0 || ^2.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.0 || ^2.0
Requires (Dev)
- doctrine/coding-standard: ^9.0
- egulias/email-validator: ^2.1.23
- nyholm/psr7: ^1.2
- pdepend/pdepend: ^2.5
- php-http/curl-client: ^2.0
- php-parallel-lint/php-parallel-lint: ^1.2
- phpmd/phpmd: ^2.9.1
- phpstan/phpstan: ^0.12.64
- phpunit/phpunit: ^10.0
- symfony/mailer: ^5.0
README
A simple PHP (8.1+) client for Mailhog.
Design Goals
- As little dependencies as possible
- Simple single client for both Mailhog V1 API as well as Mailhog V2 API
- Integration tests on all endpoints, both happy path and failure paths
Installation
This package does not require any specific HTTP client implementation, but is based on HTTPlug, so you can inject your own HTTP client of choice. So you when you install this library make sure you either already have an HTTP client installed, or install one at the same time as installing this library, otherwise installation will fail.
composer require rpkamp/mailhog-client <your-http-client-of-choice>
For more information please refer to the HTTPlug documentation for Library Users.
Usage
<?php use rpkamp\Mailhog\MailhogClient; $client = new MailhogClient(new SomeHttpClient(), new SomeRequestFactory(), 'http://my.mailhog.host:port/');
Where SomeHttpClient
is a class that implements Http\Client\HttpClient
from HTTPlug and SomeMessageFactory
is a class that implements Http\Message\RequestFactory
from HTTPlug, and my.mailhog.host
is the hostname (or IP) where mailhog is running, and port
is the port where the mailhog API is running (by default 8025).
Run tests
Make sure you have Mailhog running and run:
make test
Running Mailhog for tests
You can either run your own instance of Mailhog or use the provided Dockerfile to run one for you. To run Mailhog with Docker make sure you have Docker insalled and run:
docker-compose up -d
Mailhog ports for tests
To prevent port collissions with any other Mailhog instances while testing the tests expect Mailhog to listen to SMTP on port 2025 (instead of the default 1025) and to HTTP traffic on port 9025 (instead of the default 8025).
If you want different ports you can copy phpunit.xml.dist
to phpunit.xml
and change the port numbers in the environment variables therein.